android - 在模拟器上运行程序时,在 Android 中复制数据库时出错

标签 android database sqlite emulation

我编写了一个简单的 Android 应用程序,它使用 "assets" 文件夹中的 sqlite 数据库。我使用了 DataHelper 类,它的 DB_PATH 初始化如下:

 private static String DB_PATH = "/data/data/program.proverb/databases/";

当我尝试在我的 Galaxy S 上运行它时,它工作正常,但是当我尝试在模拟器上运行它时,它显示以下错误:

11-13 19:20:31.302: ERROR/AndroidRuntime(289): FATAL EXCEPTION: main
11-13 19:20:31.302: ERROR/AndroidRuntime(289): java.lang.Error: Error copying database

你能帮我解决这个问题,让它也能在模拟器上运行吗?

最佳答案

try
{
   copyDataBase();
} 
catch (IOException e)
{
      throw new Error("Error copying database");
}

您的答案在 IOException 中。您需要记录堆栈跟踪,或者不是抛出“错误”,而是抛出:

throw new RuntimeException(e);

Android 将抓取异常并为您记录。这应该至少告诉您从哪里开始。

有两个可能的候选人。

1) assets 文件夹中不存在该数据库(或名称略有错误)。 2) 您的程序文件夹路径错误。

关于android - 在模拟器上运行程序时,在 Android 中复制数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112772/

相关文章:

Android 11. ContentResolver.query 返回空游标

java - Android 服务 ("startService & stopService") 和播放/停止按钮合二为一

java - BSAF 停止打开数据库连接

sql - 社交网络数据库架构?

ios - Xcode中如何使用已有的数据库文件,读写?

android - 带有动态分隔符的 ListView -数据库

android - 如何通过 url schema 运行 Flutter?

android - 我应该在发布之前从我的代码中删除 e.printStackTrace()

sql - 带有 SSTable 附加二级索引的 Cassandra 与关系数据库

ios - SQLite 查询 WHERE 和 NSNumber 在处理参数时给出 BAD ACCESS 错误