【问题标题】:SQLite Can't upgrade read-only database from version 2 to 3SQLite 无法将只读数据库从版本 2 升级到 3
【发布时间】:2013-02-01 09:19:46
【问题描述】:

我的 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

我不想在升级时丢失我的数据,这就是我不使用删除查询的原因。

更新:- 我读到这个 ​​ALTER TABLE 在 sqlite 中是有限的,有人请告诉我你可以改变多少次来添加和重命名。 p>

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    您可以根据需要添加任意数量,但一次只能添加一个。见http://www.sqlite.org/lang_altertable.html

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

    未经测试

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 2011-03-26
      • 2013-02-07
      • 2022-08-23
      • 1970-01-01
      相关资源
      最近更新 更多