0

我开发了在我的公司中使用的应用程序。当我尝试安装更新的应用程序时出现此错误。错误发生在这行代码:

SQLiteDatabase db = SQLiteOpenHelperDAO.getInstance(context).getReadableDatabase();

我把 try/catch 放在那里,错误消息显示“无法打开数据库文件”

logCat 告诉我:

04-02 11:50:38.626: I/Database(16526): sqlite returned: error code = 14, msg = cannot open file at source line 25467
04-02 11:50:38.626: E/Database(16526):  sqlite3_open_v2("/data/data/myappPackage/databases/mydb.db", &handle, 6, NULL) failed
04-02 11:50:38.642: E/SQLiteOpenHelper(16526): Couldn't open mydb.db for writing (will try read-only):

然后我得到了Force close

这是我的getInstance方法

public static synchronized SQLiteOpenHelperDAO getInstance(Context context) {

    if (helper == null) {
        helper = new SQLiteOpenHelperDAO(context);
    }

    if (dbRefCounter > 1000)
        dbRefCounter = 0;
    else
        dbRefCounter++;

    Log.i(TAG, "Return new reference to mPos database. Current number of references=" + String.valueOf(dbRefCounter));

    return helper;
}

我有大约 3 台设备进行测试,当我尝试升级应用程序时,这个错误总是只发生在三星设备上,但它适用于我的索尼 XSL 和中国 Android 平板电脑。

我不知道如何解决这个问题。请帮助问候。

4

1 回答 1

0

尝试这个 。

如果它有效,请检查您的 getInstance() 在 Database 类中。

 SQLiteOpenHelperDAO dbAdapter = new  SQLiteOpenHelperDAO(this);

 SQLiteDatabase db = dbAdapter .getReadableDatabase();

或者这里是 getInstance()。

public static synchronized SQLiteOpenHelperDAO  getInstance(Context ctx)
    {
        if (dbAdapter == null) 
            dbAdapter = new SQLiteOpenHelperDAO(ctx);
        }

        return dbAdapter;
    }
于 2013-04-02T08:39:30.127 回答