0

我只想创建一个可用于保存不同表的数据库。但起初,我只想创建一个没有任何表的数据库,然后检查数据库文件是否存在,然后发出 create table 命令。因此,表创建可以在以后完成,但数据库创建最初可以在 android 应用程序启动时完成

4

4 回答 4

0

SQLite 在您对其进行一些更改之前不会创建数据库。

不涉及表的无害更改是执行操作:

PRAGMA user_version = 0
于 2012-10-04T19:11:41.817 回答
0

是的,我很确定你可以做到这一点。如果您使用的是 SQLiteDatabaseHelper,您只需不在 onCreate 中创建表,然后编写一个 creatTable() 函数稍后为您处理。如果您使用 Context.openOrCreateDatabase(),它会创建一个空数据库。但是,我不确定如何检查数据库是否已经存在。

要记住的一件事是,如果您没有表,则实际上可能不会创建数据库。在创建第一个表之前创建数据库不会有任何伤害。

于 2012-10-04T17:44:10.413 回答
0

这应该是可能的。看看这个链接。尝试使用 getWritableDatabase()。根据文档,如果数据库存在,则应该创建数据库,或者打开现有数据库。

如果您对此有疑问,则只需使用这样的表创建数据库然后立即删除该表。IE:

    public static void clearDatabase(SQLiteDatabase db) {
        db.delete(DATABASE_TABLE, null, null);
        db.delete(sqlite_sequence, "name = '"
                + DATABASE_TABLE + "'", null);
}

上面的代码删除了表中的所有条目。要完全删除它,你可以试试这个

db.execSQL("DROP TABLE IF EXISTS '" + DATABASE_TABLE + "'");

希望这会有所帮助!干杯

于 2012-10-04T17:53:36.613 回答
0

不完全确定您尝试实现的目标对我来说听起来像您只是使用创建/未创建的数据库状态作为标志。如果是这样,最好只处理这是一个 sharedpreference 变量并在您实际需要时创建数据库。

于 2012-10-04T17:55:49.697 回答