【发布时间】:2014-04-10 19:56:36
【问题描述】:
我想在数据目录中为应用程序创建一个数据库。我尝试使用
try{
String path = "/data/data/"+context+"/database/Einkaufsliste.sqlite";
database = SQLiteDatabase.openOrCreateDatabase(path,null);
}
但我总是遇到以下异常: 无法打开数据库文件
Logcat 给出以下结果:
04-10 19:55:09.387: E/SqliteDatabaseCpp(554): sqlite3_open_v2("/data/data/at.einkaufsliste/database/Einkaufsliste.sqlite", &handle, 6, NULL) 失败 04-10 19:55:09.527: E/SQLiteDatabase(554): 无法打开数据库。关闭它。 04-10 19:55:09.527: E/SQLite 数据库(554): android.database.sqlite.SQLiteCantOpenDatabaseException:无法 打开数据库文件 04-10 19:55:09.527: E/SQLiteDatabase(554): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1013) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1043) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 at.einkaufsliste.Database.createOrOpen(Database.java:33) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 at.einkaufsliste.Database.(Database.java:23) 04-10 19:55:09.527: E/SQLiteDatabase(554):在 at.einkaufsliste.MainActivity.onCreate(MainActivity.java:50) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 android.app.Activity.performCreate(Activity.java:4465) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.app.ActivityThread.access$600(ActivityThread.java:123) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 android.os.Handler.dispatchMessage(Handler.java:99) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 android.os.Looper.loop(Looper.java:137) 04-10 19:55:09.527: E/SQLiteDatabase(554):在 android.app.ActivityThread.main(ActivityThread.java:4424) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 java.lang.reflect.Method.invokeNative(Native Method) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 java.lang.reflect.Method.invoke(Method.java:511) 04-10 19:55:09.527: E/SQLiteDatabase(554):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-10 19:55:09.527: E/SQLiteDatabase(554): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-10 19:55:09.527:E/SQLiteDatabase(554):在 dalvik.system.NativeStart.main(Native Method)
我设置权限EXTERNAL Storage和组权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<permission-group android:name="android.permission-group.STORAGE"></permission-group>
这种用法有什么问题?
【问题讨论】: