我有一个 Android 应用程序,它需要检查数据库中是否已经有一个记录,如果没有,处理一些东西,并最终插入它,并简单地从数据库中读取数据,如果数据确实存在。我正在使用 SQLiteOpenHelper 的一个子类来创建和获取 SQLiteDatabase 的一个可重写实例,我认为如果表不存在的话,这个实例会自动处理创建表的事情(因为创建表的代码在 onCreate (...)方法中)。
然而,当表还不存在时,第一个运行在 SQLiteDatabase 对象上的方法是调用 query (...) ,我的 logcat 显示一个错误“ I/Database (26434) : sqlite 返回: error code = 1,msg = no such table: appdata”,果然,appdata 表没有被创建。
知道为什么吗?
我正在寻找一种方法来测试表是否存在(因为如果它不存在,数据肯定不在其中,我不需要读取它,直到我写入它,这似乎正确地创建了表) ,或者一种方法来确保它被创建,只是空,及时的第一次调用查询(...)
剪辑
这是在以下两个答案之后贴出的:
我想我找到问题所在了。由于某种原因,我认为应该为每个表创建一个不同的 SQLiteOpenHelper,即使它们都访问同一个数据库文件。我认为重构代码,只使用一个 OpenHelper,并在其 onCreate 中创建两个表可能会更好..。