0

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

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')

再添加 1 个表:

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

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

4

1 回答 1

1

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

于 2015-04-30T23:00:25.803 回答