SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(databaseFile, null);可是死活都会有一个错误02-27 22:28:37.149 11221-11221/io.wicp.namespacewjx.salarycalculator E/SQLiteLog: (14) cannot open file at line 30191 of [00bb9c9ce4]02-27 22:28:37.149 11221-11221/io.wicp.namespacewjx.salarycalculator E/SQLiteLog: (14) os_unix.c:30191: (21) open(/data/data/io.wicp.namespacewjx.salarycalculator/databases/salary database.db3) - 02-27 22:28:37.159 11221-11221/io.wicp.namespacewjx.salarycalculator E/SQLiteDatabase: Failed to open database '/data/data/io.wicp.namespacewjx.salarycalculator/databases/salary database.db3'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) at io.wicp.namespacewjx.salarycalculator.model.db.DatabaseManager.initDB(DatabaseManager.java:35) at io.wicp.namespacewjx.salarycalculator.model.db.DatabaseManager.<init>(DatabaseManager.java:21) at io.wicp.namespacewjx.salarycalculator.activity.SalaryMainActivity.testWorkerDatabase(SalaryMainActivity.java:30) at io.wicp.namespacewjx.salarycalculator.activity.SalaryMainActivity.onCreate(SalaryMainActivity.java:21) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2163) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5045) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)我尝试给这个程序读写的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>可是错误依旧后来,网上搜索许多的文章(原文章忘记在哪里了,不过感谢那个文章作者),才知道原来,OpenOrCreateDatabase并不会帮我们创建一个文件,这个文件必须由自己创建。于是,添加如下的代码
if (!databaseFile.exists()) { databaseFile.getParentFile().mkdirs(); try { databaseFile.createNewFile(); } catch (IOException e) { e.PRintStackTrace(); } }终于可以了,成功打开了数据库
新闻热点
疑难解答