我正在将Preload Database与多个表一起使用,而所有表中的表中都已经存在数据。 我的错误logcat显示“没有这样的表:cake(代码1 SQLITE_ERROR):,而编译时:从cake at选择*”,但实际上表及其数据已经存在。
我还检查了Phone中复制的数据库,它在那里,但是在代码中显示上面的错误。
如何解决这个问题?
注意:此错误仅在Google Pixel Phone中出现。
AndroidRuntime:致命异常:主要 流程:com.ebizzapps.swadishtcookingrecipesinhindi,PID:9060 java.lang.RuntimeException:无法启动活动ComponentInfo {com.ebizzapps.swadishtcookingrecipesinhindi / com.ebizzapps.swadishtcookingrecipesinhindi.DetailRecipe}: android.database.sqlite.SQLiteException:没有这样的表:cake(代码1 SQLITE_ERROR):,在编译时:从蛋糕中选择* 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1808) 在android.os.Handler.dispatchMessage(Handler.java:106) 在android.os.Looper.loop(Looper.java:193) 在android.app.ActivityThread.main(ActivityThread.java:6669) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 引起原因:android.database.sqlite.SQLiteException:否这样的表:cake(代码1 SQLITE_ERROR):,而在编译时:选择* from 蛋糕 在android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native 方法) 在android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:903) 在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:514) 在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58) 在android.database.sqlite.SQLiteQuery。(SQLiteQuery.java:37) 在android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46) 在android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1408) 在android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1347) 在com.ebizzapps.swadishtcookingrecipesinhindi.DBHelper.getDatas(DBHelper.java:162) 在com.ebizzapps.swadishtcookingrecipesinhindi.DetailRecipe.onCreate(DetailRecipe.java:161) 在android.app.Activity.performCreate(Activity.java:7136) 在android.app.Activity.performCreate(Activity.java:7127) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1808) 在android.os.Handler.dispatchMessage(Handler.java:106) 在android.os.Looper.loop(Looper.java:193) 在android.app.ActivityThread.main(ActivityThread.java:6669) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
答案 0 :(得分:1)
请参阅此stackoverflow帖子:Android P SQLite Pragma Log。
禁用您的 SQLiteOpenHelper 的 onOpen 方法的预写日志记录,如下所示:
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
db.disableWriteAheadLogging();
}
答案 1 :(得分:0)
答案 2 :(得分:0)
从您的错误日志中。
没有这样的表:蛋糕(代码1 SQLITE_ERROR):,正在编译:选择 *来自蛋糕
它提到没有名称为cake
的表。因此,在从表中获取值之前,请确保数据库中已经存在具有该名称的表。