相关疑难解决方法(0)

Android SQLiteAssetHelper无法将只读数据库从版本1升级到2:

我想创建一个离线词典应用程序,有时需要更新,旧数据库将被新的替换.这就是我想做的事情,我用SQLiteAssetHelper图书馆做了类似的事情:

注意: SQLiteAssetHelper将数据库从assets文件夹复制到app data文件夹中

public class MyDb extends SQLiteAssetHelper {
  private static final String DATABASE_NAME    = "db.sqlite";
  private static final int    DATABASE_VERSION = 1;
  public MyDb(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想更新数据库,在将新db.sqlite文件放入assets文件夹后,我操纵了我的代码,如下所示:

public class MyDb extends SQLiteAssetHelper {
  private static final String DATABASE_NAME    = "db.sqlite";
  private static final int    DATABASE_VERSION = 2;
  public MyDb(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我编译并运行时,它说:无法将只读数据库从版本1升级到2

解决办法是什么?

通过清除应用数据,它将正常工作......

对不起,我的英语不好...

sqlite android

4
推荐指数
2
解决办法
2636
查看次数

SQLiteException:无法将只读数据库从版本1升级到2

在我的数据库的第一个版本中,我有三行.以下方法属于扩展的类SQLiteOpenHelper.

@Override
public void onCreate(SQLiteDatabase database) {
    database.execSQL("CREATE TABLE " + DATABASENAME + " (name TEXT, latitude REAL, longitude REAL);");
}
Run Code Online (Sandbox Code Playgroud)

现在,我已将版本号从1更改为2,并添加了一个新行:

@Override
public void onCreate(SQLiteDatabase database) {
    database.execSQL("CREATE TABLE " + DATABASENAME + " (name TEXT, latitude REAL, longitude REAL, country TEXT);");
}
Run Code Online (Sandbox Code Playgroud)

我不在乎旧数据库丢失了,所以我在升级时使用它:

@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
    db.delete(DATABASENAME, null, null);
    onCreate(db);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我调用该方法时getReadableDatabase(),应用程序崩溃,导致logcat错误

引起:android.database.sqlite.SQLiteException:无法将只读数据库从版本1升级到2:/data/data/com.myapp.app/databases/mydb

我怎么能阻止这个?

编辑

全班:

public class StationsOpenHelper extends SQLiteOpenHelper {

    private static final String DATABASENAME …
Run Code Online (Sandbox Code Playgroud)

sqlite android

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×2

sqlite ×2