gpt4 book ai didi

java - SQLite Android - MODE_WORLD_WRITEABLE 无法解析为变量

转载 作者:行者123 更新时间:2023-11-30 04:16:42 25 4
gpt4 key购买 nike

我的应用程序是一个音板应用程序,但是类别中有很多声音。每个类别都在不同的 Activity 中运行。因此,第一个 Activity 会在用户选择类别时调用其他 Activity 。

该应用程序有 200 多种声音,我开始制作一个 SQLite 数据库,以便用户可以选择最喜欢的声音并在单独的 Activity 中显示它们。

它已经在工作了,但是代码在 Activity 中,当我将 sqlite 代码放在另一个类中的一个方法中时(如果我想改变一些东西,它会让我的工作更容易,因为有 20 个类别)它给了我对于 MODE_WORLD_WRITEABLE,“无法解析为变量”。

方法如下:

public void cria(String titulo,int id){
SQLiteDatabase sampleDB = null;

try {
sampleDB = this.openOrCreateDatabase(SAMPLE_DB_NAME, CODE_WORLD_WRITEABLE, null);

sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
SAMPLE_TABLE_NAME +
" (titulo VARCHAR, id INT);");

sampleDB.execSQL("INSERT INTO " +
SAMPLE_TABLE_NAME +
" Values ('" +
titulo +
"'," +
id +
");");

} catch (SQLiteException se ) {
Log.e(getClass().getSimpleName(), "Could not create or Open the database");
} finally {
//nothin to do
}
}

我曾尝试使用 (String titulo,int id, Context cont) 和 cont.CODE_WORLD_WRITEABLE 但随后出现错误,如 openOrCreateDatabase is undefined for the type banco(banco 是类名称)

如何在另一个不是 Activity 的类中使用 openOrCreateDatabase?如果你们可以给我看一个 fragment 。

=========编辑===========

随着 zrgiu 解决了这个问题,这里是我在 banco 类中的代码:

公共(public)类银行{

private final static String SAMPLE_DB_NAME = "myFriendsDb";
private final static String SAMPLE_TABLE_NAME = "friends";



public static void cria(String titulo,int id, Context cont){
SQLiteDatabase sampleDB = null;

try {
sampleDB = cont.openOrCreateDatabase(SAMPLE_DB_NAME, Context.MODE_WORLD_WRITEABLE, null);

sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
SAMPLE_TABLE_NAME +
" (titulo VARCHAR, id INT);");

sampleDB.execSQL("INSERT INTO " +
SAMPLE_TABLE_NAME +
" Values ('" +
titulo +
"'," +
id +
");");

} catch (SQLiteException se ) {
Log.e(cont.getClass().getSimpleName(), "Could not create or Open the database");
} finally {
sampleDB.close();
}
}

在我使用的 Activity 中:

banco.cria(somestring,someint, this);

再次感谢zrgiu。

最佳答案

您将需要一个上下文来创建/打开本地化到您的应用程序的数据库。对你来说最简单的方法就是将上下文实例传递给你的函数或类,确保你不会泄漏它。

另一种解决方案是将您的 sqlite 数据库存储在外部存储上,这不需要上下文,但也会将您的数据库公开给所有其他应用程序和用户。

关于java - SQLite Android - MODE_WORLD_WRITEABLE 无法解析为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865945/

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