我开发了在我公司使用的应用程序。我尝试安装更新的应用程序时遇到此错误。错误发生在这行代码中:
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):
然后我得到 强制关闭 。
这是我的 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平板电脑配合使用。
我不知道如何解决这个问题。 请帮忙 问候。
答案 0 :(得分:0)
试试这个。
如果有效,请检查Database类中的getInstance()。
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;
}