我正在尝试从资产文件夹中复制现有数据库并对其执行一些操作。一切工作正常,但我的模拟器的日志文件中出现以下错误:
sqlite returned: error code = 14, msg = cannot open file at source line 25467
09-06 11:23:41.844: INFO/Database(22560): sqlite returned: error code = 14, msg = cannot open file at source line 25467
09-06 11:23:41.885: ERROR/Database(22560): sqlite3_open_v2("/data/data/com.dhani.Lazy/databases/LazyDB.sqlite", &handle, 1, NULL) failed
09-06 11:23:41.885: WARN/System.err(22560): android.database.sqlite.SQLiteException: unable to open database file
09-06 11:23:41.894: WARN/System.err(22560): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
09-06 11:23:41.904: WARN/System.err(22560): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
09-06 11:23:41.914: WARN/System.err(22560): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Database.DataBaseHelper.checkDataBase(DataBaseHelper.java:72)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Database.DataBaseHelper.createDataBase(DataBaseHelper.java:47)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Database.DataBaseHelper.Login(DataBaseHelper.java:166)
09-06 11:23:41.914: WARN/System.err(22560): at com.dharani.LazyApple.Views.LoginView$1.onClick(LoginView.java:63)
09-06 11:23:41.934: WARN/System.err(22560): at android.view.View.performClick(View.java:2485)
09-06 11:23:41.934: WARN/System.err(22560): at android.view.View$PerformClick.run(View.java:9080)
09-06 11:23:41.944: WARN/System.err(22560): at android.os.Handler.handleCallback(Handler.java:587)
09-06 11:23:41.944: WARN/System.err(22560): at android.os.Handler.dispatchMessage(Handler.java:92)
09-06 11:23:41.944: WARN/System.err(22560): at android.os.Looper.loop(Looper.java:123)
09-06 11:23:41.944: WARN/System.err(22560): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-06 11:23:41.964: WARN/System.err(22560): at java.lang.reflect.Method.invokeNative(Native Method)
09-06 11:23:41.964: WARN/System.err(22560): at java.lang.reflect.Method.invoke(Method.java:507)
09-06 11:23:41.964: WARN/System.err(22560): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-06 11:23:41.964: WARN/System.err(22560): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-06 11:23:41.964: WARN/System.err(22560): at dalvik.system.NativeStart.main(Native Method)
关于如何解决这个问题有什么建议吗?
这可能有点晚了,但希望这对遇到这个问题的人有所帮助(因为我找不到明确的解决方案)。
我想我知道这个原因的原因(至少对于我来说)。寻找在DDMS --> 文件资源管理器,你会意识到数据库文件夹(/data/data//databases/)不存在,这就是应用程序无法在该不存在的文件夹中创建数据库文件的原因。如果您可以通过某种方式创建数据库文件夹,则可以避免此问题。
因为我比较懒,所以就用了/数据/数据//文件/文件夹当我处于模拟器模式时。您可以使用以下命令获取文件目录:
context.getFilesDir().getPath()
这在模拟器中对我来说效果很好。
希望这对某人有帮助。
如果您想查看一些代码:
String dbFilename = "example.db";
try
{
File databaseFile = getDatabasePath(dbFilename);
SQLiteDatabase _db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
} catch (Exception e)
{
String databasePath = getFilesDir().getPath() + "/" + dbFilename;
File databaseFile = new File(databasePath);
_db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
}
编辑:我尝试在模拟器上登录 Facebook(我的应用程序集成了 FB),之后出现了 /databases 文件夹(并持续存在)。不确定发生了什么,但可以以某种方式创建该文件夹。这里的另一位专家可以提供一些启发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)