2013-03-11 61 views
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 

正常的光标,我可以很轻松地处理一列,但我需要知道如何在时间分配两个列。

回答

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

对于您的问题,创建具有属性促进会和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); 
       } 
+0

我已经加入我的查询中设置这样你就可以请看看,并指出错误了吗? 谢谢。 – Trojan 2013-03-11 09:40:23

+0

感谢队友上帝保佑:) – Trojan 2013-03-11 14:47:52