java无法使用(Begin Transaction)方法删除SQLite列
在安卓studiosqlite数据库中,我有一个带有两列(name,id)的表“title”。我想删除id列,我使用了事务处理方法,但它不起作用。 将name列复制到新表后,我希望新表本身应该有id列
try {
SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("db", MODE_PRIVATE, null);
sqLiteDatabase.execSQL("BEGIN TRANSACTION");
sqLiteDatabase.execSQL("CREATE TEMPORARY TABLE t1(name VARCHAR)");
sqLiteDatabase.execSQL("INSERT INTO t1 SELECT name FROM title");
sqLiteDatabase.execSQL("DROP TABLE title");
sqLiteDatabase.execSQL("CREATE TABLE title (name VARCHAR, id INTEGER PRIMARY KEY)");
sqLiteDatabase.execSQL("INSERT INTO title SELECT name FROM t1");
sqLiteDatabase.execSQL("DROP TABLE t1");
sqLiteDatabase.execSQL("COMMIT");
} catch (Exception e) {
}
我也试过这个
try {
SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("db", MODE_PRIVATE, null);
sqLiteDatabase.execSQL("BEGIN TRANSACTION");
sqLiteDatabase.execSQL("CREATE TEMPORARY TABLE t1(name VARCHAR,id INTEGER PRIMARY KEY)");
sqLiteDatabase.execSQL("INSERT INTO t1 SELECT name FROM title");
sqLiteDatabase.execSQL("DROP TABLE title");
sqLiteDatabase.execSQL("CREATE TABLE title (name VARCHAR, id INTEGER PRIMARY KEY)");
sqLiteDatabase.execSQL("INSERT INTO title SELECT name,id FROM t1");
sqLiteDatabase.execSQL("DROP TABLE t1");
sqLiteDatabase.execSQL("COMMIT");
} catch (Exception e) {
}
# 1 楼答案
您的问题是由于以下异常:
也就是说,您没有为id列提供值
改用
或者