我想添加新列我的书籍表但显示错误: - 我做错了什么。
引起:android.database.sqlite.SQLiteException:表格书籍已经存在
以上错误
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL( "CREATE TABLE books (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT ,author TEXT,isbn TEXT,city TEXT );");
Log.v("onCreate-------","called onCreate");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
android.util.Log.w("books",
"Upgrading database, which will destroy all old data");
//db.execSQL("DROP TABLE IF EXISTS books");
db.execSQL("ALTER TABLE books ADD COLUMN city2 TEXT");
onCreate(db);
Log.v("onUpgrade-------","called onUpgrade with alter");
}
答案 0 :(得分:2)
onCreate(db); Log.v("onUpgrade-------","called onUpgrade with alter");
此处无需再次致电onCreate。这就是问题所在。
答案 1 :(得分:0)
将创建查询更改为 -
CREATE TABLE IF NOT EXISTS books....
答案 2 :(得分:0)
使用以下方法检查数据库是否已存在?
可能会跟着帮助你。
public static final String DB_PATH = "/data/data/com.test.appname/databases/";
public static final String DB_NAME = "databasename.db";
public boolean checkDBExists()
{
try
{
File file = new File(DB_PATH+DB_NAME);
if(file.exists())
{
// do nothing
}
else
{
db.execSQL( "CREATE TABLE books (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT ,author TEXT,isbn TEXT,city TEXT );");
}
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}