我有一个从DB返回2组Col的查询,我想如何将这些列分配给Cursor,然后再将它们用于进一步处理。
我的查询:
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
使用普通光标我可以非常轻松地处理一个列,但我需要知道如何一次分配两列。
答案 0 :(得分:1)
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")));
}
针对您的问题,创建一个自定义类CapDetails,其属性为CapId和CapName。
将方法声明更改为:
public List<CapDetails> getAllCapabilities1(String myRub)
并将声明上限更改为Cap of CapDetails而不是List of String。
在游标循环中:
while (cursor.moveToNext())
{
CapDetails capDetails = new CapDetails();
// Assign each column value to respective capDetails attribute. then,
caps.add(capDetails);
}