2012-02-21 114 views
0

我在这里使用Android的SQLiteDatabase类非常沮丧。
我有一个名为db.sqlite的测试数据库,我使用SQLiteOpenHelper类将其导入data/data/[my.app.namespace]/databse文件夹。 (演示here
现在我想能够查询该数据库。我应该为此创建另一个助手类吗?我的意思是如果要使用execSQL方法,我应该使用SQLiteDatabase类,但无法创建它的子类!
我正在进行Android编程。Android SQLiteDataBase:如何读取数据集?

P.S:我猜想SELECT声明是完全不同的。我想获取一些数据。我应该怎么做?

回答

0

在你的数据库类,如果你希望能够使用execSQL或插入/更新/删除您需要添加功能,像这样:

public boolean executeQuery(String tableName,ContentValues values){ 
    return execQuery(tableName,values); 
} 

private boolean execQuery(String tableName,ContentValues values){ 
    sqliteDb = instance.getWritableDatabase(); 
    sqliteDb.beginTransaction(); 
    sqliteDb.insert(tableName, "null", values); 
    sqliteDb.setTransactionSuccessful(); 
    sqliteDb.endTransaction(); 
    return true; 
} 

public boolean updateSQL(String tableName,ContentValues values, String where, String[] args){ 
    return updateData(tableName,values,where,args); 
} 

private boolean updateData(String tableName,ContentValues values, String where, String[] args){ 
    sqliteDb = instance.getWritableDatabase(); 
    sqliteDb.update(tableName, values, where, args); 
    return true; 
} 

public boolean deleteSQL(String tableName,String where, String[] args){ 
    return deleteData(tableName, where, args); 
} 

private boolean deleteData(String tableName,String where, String[] args){ 
    sqliteDb = instance.getWritableDatabase(); 
    sqliteDb.beginTransaction(); 
    sqliteDb.delete(tableName, where, args); 
    sqliteDb.setTransactionSuccessful(); 
    sqliteDb.endTransaction(); 
    return true; 
} 

public Cursor executeSQLQuery(String query){ 
    Cursor c = sqliteDb.rawQuery(query,null); 
    return c; 
} 

public void executeSQL(String query){ 
    sqliteDb.execSQL(query); 
} 

我使用的是同一类,我已经加入这些功能和他们正在工作。

+0

'SELECT'语句怎么样? – 2012-02-21 13:18:24

+0

您必须为SELECT语句编写自己的quesries,并且可以使用'executeSQLQuery'从'Cursor'查询查询中的数据。 – 2012-02-21 13:20:00