gpt4 book ai didi

java - IllegalStateException : database not open mean? 是什么意思

转载 作者:行者123 更新时间:2023-12-02 05:58:54 25 4
gpt4 key购买 nike

我在代码中运行 SQLiteDatabase 中的删除方法,它显示:

IllegalStateException : database not open in the log.

这是代码 fragment :

String whereClause = getWhereClause(compareColumn, compareValue);

db.delete(tableName, whereClause, null);

这是正在生成的 logcat。

04-03 16:32:09.514: E/DB DELETE ERROR(310): java.lang.IllegalStateException: database not open
04-03 16:32:09.514: W/System.err(310): java.lang.IllegalStateException: database not open
04-03 16:32:09.523: W/System.err(310): at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1585)
04-03 16:32:09.523: W/System.err(310): at mylibs.testshop.deleteRow(testshop.java:78)
04-03 16:32:09.523: W/System.err(310): at com.example.testapp.shopping_list$1.onClick(shopping_list.java:98)
04-03 16:32:09.523: W/System.err(310): at android.view.View.performClick(View.java:2408)
04-03 16:32:09.523: W/System.err(310): at android.view.View$PerformClick.run(View.java:8816)
04-03 16:32:09.523: W/System.err(310): at android.os.Handler.handleCallback(Handler.java:587)
04-03 16:32:09.533: W/System.err(310): at android.os.Handler.dispatchMessage(Handler.java:92)
04-03 16:32:09.533: W/System.err(310): at android.os.Looper.loop(Looper.java:123)
04-03 16:32:09.533: W/System.err(310): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-03 16:32:09.533: W/System.err(310): at java.lang.reflect.Method.invokeNative(Native Method)
04-03 16:32:09.533: W/System.err(310): at java.lang.reflect.Method.invoke(Method.java:521)
04-03 16:32:09.533: W/System.err(310): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-03 16:32:09.533: W/System.err(310): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-03 16:32:09.533: W/System.err(310): at dalvik.system.NativeStart.main(Native Method)

我在数据库类的顶部创建了一个构造函数。 Helper是SQLiteOpenHelper的一个实例,代码:

 public testshop(Context context) {
this.context = context;
// create or open the database
helper = new CustomSQLiteOpenHelper(context);
this.db = helper.getWritableDatabase();

}

那么我应该每次查询数据库时都使用 getWriteableDatabase() 还是只使用一次?

最佳答案

您需要首先访问数据库。通常,当您使用 SQLiteOpenHelper 时,在删除之前您应该这样做:

db = this.getWriteableDatabase() // "this" is a subclass of SQLiteOpenHelper

关于java - IllegalStateException : database not open mean? 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22839645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com