gpt4 book ai didi

java - Android SQLITE,无法仅在 Marshmallow 中打开数据库

转载 作者:搜寻专家 更新时间:2023-11-01 09:32:10 24 4
gpt4 key购买 nike

我构建了一个应用程序。 (该应用程序可以使用 SQLite 数据库 保存最喜欢的项目)。我尝试在 Android Nougat 上运行它并且没有错误。当我尝试在 Android Marshmallow 上运行它时,应用程序无法打开(强制关闭),当我检查错误时它说无法打开数据库。之后,我尝试在Android Lollipop上运行,没有发现错误。

我跟踪错误,发现在Marshmallow上,没有创建数据库。 (我使用数据库调试器来检查数据库)。我已经添加了这些用户权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

什么也没发生。还有人知道这件事吗??

**新编辑
这是检查数据库是否已经创建的语法

public DataHeper(Context context) {
// TODO Auto-generated constructor stub
this.mContext = context;
databasePath = "data/data/"+context.getPackageName()+"/databases/data.sqlite";
databaseFile = new File(databasePath);
if(!databaseFile.exists())
try {
deployDataBase(databaseName, databasePath);
} catch (IOException e) {
e.printStackTrace();
}
}



public int getTotalQuotesNoFilter(){
int i =0;
String query="";
Cursor cursor;
//This is the line that produce error (On Marshmallow only).
//I trace it and found out the db not created, thats why opendatabase produce error
database = SQLiteDatabase.openDatabase(databasePath, null, SQLiteDatabase.OPEN_READWRITE);
query = "SELECT count(quotes._id) FROM quotes;";
WriteLog.d("ThangTB", "query: "+query);
try {
cursor = database.rawQuery(query, null);
if (cursor != null){
boolean bool = cursor.moveToFirst();
int j = cursor.getInt(0);
i = j;
}

if (cursor!=null) {
cursor.close();
}
} catch (Exception e) {
// TODO: handle exception
}finally{
database.close();
}

return i;

}

最佳答案

SQLite Db 不需要用户权限。所以我想还有其他问题。发布您的代码。

关于java - Android SQLITE,无法仅在 Marshmallow 中打开数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46167857/

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