gpt4 book ai didi

database - 无法在 Android Pie (Android 9) 中打开数据库

转载 作者:IT王子 更新时间:2023-10-29 06:27:10 28 4
gpt4 key购买 nike

我使用 checkDataBase 函数来确保数据库是否已经存在,以避免每次在 Oreo 中打开应用程序时都重新复制文件。但在 Android Pie 中它不起作用。

private boolean checkDataBase (String dbName, int dbVersion) {

SQLiteDatabase checkDB = null;

try {

String myPath = DB_PATH + dbName;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.CONFLICT_ABORT);

if (checkDB.getVersion() < dbVersion) {
Timber.d("Delete database called");
myContext.deleteDatabase(dbName);
return false;
}
} catch(SQLiteException e) {

}

if(checkDB != null){
checkDB.close();
}

return checkDB != null;
}

Getting this error: os_unix.c:36667: (2) open(/data/data/my.androidPieTrial.app/databases/admin.db) android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database

最佳答案

我得到了解决方案。在 Android Oreo 及以下版本中,我访问数据库的方式工作正常,但在 Android Pie 中它不起作用。这是在 Android Pie 中处理它的方式。

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
MySQLiteOpenHelper helper = new MySQLiteOpenHelper();
SQLiteDatabase database = helper.getReadableDatabase();
myPath = database.getPath();

} else {
String DB_PATH = Environment.getDataDirectory() + "/data/my.trial.app/databases/";
myPath = DB_PATH + dbName;
}

checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
checkDB.disableWriteAheadLogging();

关于database - 无法在 Android Pie (Android 9) 中打开数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51930153/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com