0

我有一个从数据库返回 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

使用普通光标,我可以很容易地处理一列,但我需要知道如何一次分配两列。

4

1 回答 1

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")));
}

对于您的问题,使用属性 CapId 和 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);
                }
于 2013-03-11T09:26:02.850 回答