更改db文件导致SQLiteDatabase.openDatabase()崩溃

时间:2015-04-30 21:22:57

标签: android database sqlite opendatabase

我正常打开一个数据库文件,当打开一个只有元数据表的空白数据库文件时它完全正常,但是一旦我创建另一个表,就会导致应用程序崩溃。也许它是不同版本的db文件?如果您需要更多代码,请发表评论

private static String DB_PATH = "/data/data/com.example.andrew.ubair4/databases/";    
private static String DB_NAME = "coordinates";
String myPath = DB_PATH + DB_NAME;

private SQLiteDatabase db;
public DataBaseHelper(Context context){

    super(context, DB_NAME, null, 1);
    this.myContext = context;
    Log.d("TAGG","enter constructor");

    db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);      //<---- crashes right here IF I have a second table in the database
    Log.d("TAGG","2");

我的元数据表:

CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US')
INSERT INTO "android_metadata" VALUES ('en_US')

再添加一张表:

CREATE TABLE something (
  column1, 
  column2, 
  column3, 
  PRIMARY KEY (column1)
);

编辑:好的,我有新的信息。如果我采取db文件,请将其通过电子邮件发送给自己,并将其替换回原始目录。它会崩溃。是的你听到了我我甚至不会改变文件,我只是将文件通过电子邮件发送给自己,删除原始文件,然后用完全相同的文件替换它。然后它崩溃了。我要把头发撕掉了。

1 个答案:

答案 0 :(得分:1)

正如我所看到的,您正在以只读模式打开数据库。添加表 - 是一种修改,抛出异常表明您应该在修改方案或添加\删除某些数据之前以写入模式打开它。