我有一些奇怪的行为。 如果数据库不存在,我在我的Activity中执行以下代码:
listOpenHelper = new ListOpenHelper(ManageListActivity.this);
db = listOpenHelper.getReadableDatabase();
Cursor cursor = db.query(ListOpenHelper.TABLE_NAME, null, null, null, null, null, BaseColumns._ID + " DESC");
创建数据库并创建表LIST,这里没问题。
问题是当我尝试在其他Activity中执行类似的块时:
productListOpenHelper = new ProductListOpenHelper(ProductListActivity.this);
db = productListOpenHelper.getReadableDatabase();
Cursor cursor = db.query(ProductListOpenHelper.TABLE_NAME, null, null, null, null, null, ProductListOpenHelper.NAME + " ASC");
在这种情况下,我得到Exception“android.database.sqlite.SQLiteException:no such table:list :, while compiling:SELECT * FROM list ORDER BY _id DESC”
如果我擦除数据库并首先执行上面的块,并且在第一个块之后,错误将出现在productlist表中。
我需要在第一次执行时创建所有表吗? 我喜欢在用户输入每个活动时创建表格,有一些好办法吗?
谢谢!
答案 0 :(得分:0)
你有两个不同的数据库,对吗?如果没有,你可能不应该有两个不同的助手类。
此外,您创建助手可能不理想。见博客文章:
http://www.touchlab.co/blog/single-sqlite-connection/
请发布帮助程序类的代码以及为什么有两个不同的类。
答案 1 :(得分:0)
为什么你要使用两个不同的助手?我认为这不是一个好方法......您可以在最初创建表格,您可以随时使用单个帮助程序获取数据库。