我有一个应用程序,我正在尝试创建一个数据库。在第一次运行时,应用程序正常工作。随后启动的应用程序崩溃了。该错误是因为应用程序正在尝试再次创建数据库。
所以我想知道如何创建一个或多个数据库,如果它们不存在或仅在应用程序第一次运行时。
答案 0 :(得分:4)
SQLite has CREATE TABLE IF NOT EXISTS
命令。你可以试试。
尝试在已包含同名的表,索引或视图的数据库中创建新表通常是错误的。但是,如果将“IF NOT EXISTS”子句指定为CREATE TABLE语句的一部分并且已存在同名的表或视图,则CREATE TABLE命令将无效(并且不会返回任何错误消息)。如果由于现有索引而无法创建表,则仍会返回错误,即使指定了“IF NOT EXISTS”子句也是如此。
答案 1 :(得分:4)
您可以扩展SQLiteOpenHelper类来处理数据库的不同版本。这是一个例子:
public class MyDbOpenHelper extends **SQLiteOpenHelper** {
final static int VERSION = 2;
public MyDbOpenHelper(Context context, String dbname) {
super(context, dbname, null, VERSION);
}
@Override
public void **onCreate**(SQLiteDatabase db) {
/* TODO SQL-Queries for new Database */
}
@Override
public void **onUpgrade**(SQLiteDatabase db, int oldVersion, int newVersion) {
/* SQL-Queries t*/
if (oldVersion < 2) {
db.execSQL("ALTER TABLE my_table ADD COLUMN new_attrubte INTEGER");
}
}
}
数据库句柄是onCreate中的新增内容,如果存在,则使用oldVersion参数中的现有版本号调用onUpgrade。