0
db = openOrCreateDatabase("tompomodoros.db", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, mydate VARCHAR, mydata SMALLINT)");

我使用上面的代码来创建数据库及其表“mytable”。但是我第二次运行它,电话就死机了。我想那是因为我再次创建了表,但它已经存在了。所以我的问题是如何第一次创建表并在其余时间打开它?

4

2 回答 2

3

尝试if not exists

db.execSQL("CREATE TABLE if not exists mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, mydate VARCHAR, mydata SMALLINT)");

然后我们像往常一样。

于 2012-11-20T09:38:04.710 回答
1

首先检查表是否存在,使用如下:

Cursor cursor = db.rawQuery("SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name = 'mytable'", null);
if(cursor == null || cursor.getCount() == 0) { //table does not exist
        //create the Db attachments table
        db.execSQL("CREATE TABLE mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, mydate VARCHAR, mydata SMALLINT)");
}
cursor.close();
于 2012-11-20T09:37:09.217 回答