SQLite无法将只读数据库从版本2升级到3

时间:2013-02-01 09:19:47

标签: sqlite

我的SQLite数据库中有一个表。

@Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL( "CREATE TABLE book1(_id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT, author TEXT,isbn TEXT);");

我正在表中添加新列并更改数据库的版本号。

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("ALTER TABLE book1 ADD COLUMN Cost TEXT");
        Log.v("Alter Table", "Colunm Added enjoy"+db.getVersion());
        db.execSQL("INSERT into book1 (title,author,isbn,Cost,city) VALUES('php','Lioneworge',1111,1500)");

在我的表格中添加新列。

但是如果我想在我的表中再次添加新列。版本2到3

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("ALTER TABLE book1 ADD COLUMN Cost TEXT,city TEXT");

        db.execSQL("INSERT into book1 (title,author,isbn,Cost,city) VALUES('php','Lioneworge',1111,1500,'Hydrabad')");

它显示了这个

Caused by:  Can't upgrade read-only database from version 2 to 3
  

我不想丢失我的升级数据,这就是为什么我不使用drop查询。

更新: - 我读过这个ALTER TABLE在sqlite中是有限的,有些人请告诉我,我可以改变添加和重命名的时间。

1 个答案:

答案 0 :(得分:1)

您可以添加任意数量的内容,但一次只能添加一个。见http://www.sqlite.org/lang_altertable.html

将ALTER TABLE拆分为两个,每个添加1列并尝试

未经过测试