将两个数据库列的值分配给光标?
问题描述:
我有一个查询从数据库返回2组列,我想如何将这些列分配给光标,并稍后使用它们进行进一步处理。将两个数据库列的值分配给光标?
那是我的查询:
public List<String> getAllCapabilities1(String myRub)
{
List<String> Caps = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT Cap_Name, Cap_ID FROM capability where Rub_ID = '"+myRub+"'";
SQLiteDatabase database = this.dbOpenHelper.getReadableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst())
{
do
{
Caps.add(cursor.getString(0));
}
while (cursor.moveToNext());
}
该查询返回:
Cap_Name Cap_ID
Cap 1 1
Cap 2 2
Cap 3 3
正常的光标,我可以很轻松地处理一列,但我需要知道如何在时间分配两个列。
答
Android Cursor是SELECT查询的ResultSet,它可以包含任意数量的列。
每个列值可以得到如下:
Cursor c = db.rawQuery("SELECT * FROM TABLE_NAME", null);
while(c.moveToNext()) {
Log.d("Column1", c.getString(c.getColumnIndex("Column1")));
Log.d("Column2", c.getString(c.getColumnIndex("Column2")));
}
对于您的问题,创建具有属性促进会和CapName一个自定义类CapDetails。
更改您的方法声明为:
public List<CapDetails> getAllCapabilities1(String myRub)
,改变申报上限,以CapDetails的列表,而不是字符串列表。
游标循环中:
while (cursor.moveToNext())
{
CapDetails capDetails = new CapDetails();
// Assign each column value to respective capDetails attribute. then,
caps.add(capDetails);
}
我已经加入我的查询中设置这样你就可以请看看,并指出错误了吗? 谢谢。 – Trojan 2013-03-11 09:40:23
感谢队友上帝保佑:) – Trojan 2013-03-11 14:47:52