Android sqlite3_open_v2(“/ data / data / package name / * .db”,& handle,1,NULL)失败

时间:2013-04-02 07:20:55

标签: android sqlite

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

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平板电脑配合使用。

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

1 个答案:

答案 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;
    }