2013-03-11 33 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

相關問題