【发布时间】:2012-04-09 14:12:07
【问题描述】:
我的应用程序是一个音板应用程序,但类别中有很多声音。每个类别都在不同的活动中运行。因此,当用户选择类别时,第一个活动会调用其他活动。
该应用有 200 多种声音,我开始制作 SQLite DB,以便用户可以选择最喜欢的声音并在单独的 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 is the class name) 的错误。
如何在另一个不是活动的类中使用openOrCreateDatabase?如果你们可以给我看一个sn-p。
=========编辑===========
zrgiu 解决了这个问题,下面是我在 banco 类中的代码:
公共类银行{
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();
}
}
}
在我使用的活动中:
banco.cria(somestring,someint, this);
再次感谢zrgiu。
【问题讨论】:
标签: java android sqlite class methods