数据库已存在时创建新表的问题

时间:2011-11-08 03:14:01

标签: android sqlite create-table

我有一些奇怪的行为。 如果数据库不存在,我在我的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表中。

我需要在第一次执行时创建所有表吗? 我喜欢在用户输入每个活动时创建表格,有一些好办法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你有两个不同的数据库,对吗?如果没有,你可能不应该有两个不同的助手类。

此外,您创建助手可能不理想。见博客文章:

http://www.touchlab.co/blog/single-sqlite-connection/

请发布帮助程序类的代码以及为什么有两个不同的类。

答案 1 :(得分:0)

为什么你要使用两个不同的助手?我认为这不是一个好方法......您可以在最初创建表格,您可以随时使用单个帮助程序获取数据库。