3

我的 Android 应用程序中的 SQLite 数据库遇到了一些问题。问题是数据库永远不会更新,即使在多次重新启动模拟器、Eclipse 或从 DDMS 删除之后也是如此。

这是我的 onCreate 方法,位于扩展 SQLiteOpenHelper 的类中:

public void onCreate(SQLiteDatabase database) {
    try {
        database.execSQL(ESSENCE_TABLE_CREATE);
        database.execSQL(PACCO_TABLE_CREATE);
        database.execSQL(TAVOLE_TABLE_CREATE);
        database.rawQuery("insert into essenza values(1, 'Rovere')",
                null); // added later
    } catch (SQLException e) {
        Log.e("DB", e.getMessage());
    }
}

实例化助手后,我请求对数据库的引用:

    helper = new DBHelper(context, dbpath + "/" + DATABASE_NAME);
    database = helper.getWritableDatabase();

似乎未执行 rawQuery 语句(稍后添加),并且正在使用的数据库是从以前的版本缓存的。我也尝试更改数据库的版本,但没有奏效。我错过了什么吗?提前致谢。

4

1 回答 1

6

你有两个选择:

  1. 使用 DDM 从您的设备中删除数据库文件(查看 /data/data/)。这将强制 Android 再次运行 onCreate。
  2. 在您的构造函数中,递增您传递给 SQLiteOpenHelper 的数据库版本。将您的原始查询添加到 onUpgrade。

您可能需要选项 1。如果您的应用程序用户想要更新其数据库,则选项 2 会更好。

于 2011-08-31T17:33:08.977 回答