2012-02-24 43 views
1

我使用遊標從數據庫中檢索數據。我知道如何檢索整列以用於列表視圖等,但我正在努力尋找一種方法來檢索單個值。假設我有一個包含兩列(「_id」和「Name」)的表,並且該表中有十條記錄(行)。我將如何得到,例如,第三行的名稱?考慮到我所定義的光標,它讀取該表:Android-使用遊標從數據庫表中獲取單個值

public Cursor getMyNameInfo() { 

    SQLiteDatabase db = getReadableDatabase(); 
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 


    String sqlTables = "MyNames"; 
    qb.setTables(sqlTables); 
    Cursor c = qb.query(db, null, null, null, 
      null, null, null); 

    c.moveToFirst(); 
    return c; 
    } 

回答

7

代替c.moveToFirst()使用c.moveToPosition(2)Cursor索引從零開始因此 '2' 是第三張唱片)。

請記住檢查Cursor有第一個有效的數據。

編輯:

一旦你移動光標到第三個記錄如我上面解釋,使用以下方法來剛剛得到的「名稱」列的值。

String theName = c.getString(getColumnIndex("Name")); 
+0

這將返回該單行? – tyb 2012-02-24 18:46:23

+1

「Cursor」只在任何給定時間指向單行,因此使用「moveTo ...」方法。 – Squonk 2012-02-24 18:47:44

+0

@tyb:另請參閱我的編輯以訪問單列值。 – Squonk 2012-02-24 18:53:30

1
Cursor cursor = dbHelper.getdata(); 

     System.out.println("colo" + cursor.getColumnCount() + "" 
       + cursor.getCount()); 

     cursor.moveToFirst(); 

     if (cursor != null) { 

      while (cursor.isAfterLast() == false) { 

       String chktitle = title.trim().toString(); 
       String str = cursor.getString(cursor.getColumnIndex("title")); 

       System.out.println("title :: " 
         + cursor.getString(cursor.getColumnIndex("title"))); 
       System.out.println("date :: " 
         + cursor.getString(cursor.getColumnIndex("date"))); 
       System.out.println("desc :: " 
         + cursor.getString(cursor.getColumnIndex("desc"))); 

       if (chktitle.equals(str) == true) { 
        tvAddfavorite.setText("Remove Favorite"); 
        break; 
       } 
       cursor.moveToNext(); 
      } 
     } 
     cursor.close(); 
+0

看到我的upadated答案 – 2012-02-24 18:41:41

1

添加WHERE子句:

qb.appendWhere("_id = 2"); 
+0

我在哪裏添加? – tyb 2012-02-24 18:42:56

+0

@tyb在「SQLiteQueryBuilder qb」上進行查詢之前。 – Luksprog 2012-02-24 18:48:22

0

感謝上面的答案,我創建了以下方法來給出來自另一列的項目的值,但在同一行。

public String getValueFromColumn(int position, String tableName, String columnToGetValueFrom) { 

    SQLiteDatabase db = getReadableDatabase(); 
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 

    qb.setTables(tableName); 
    Cursor c = qb.query(db, null, null, null, 
      null, null, null); 

    c.moveToPosition(position); 
    String neededValue = c.getString(c.getColumnIndex(columnToGetValueFrom)); 
    return neededValue; 
} 

希望它可以幫助任何人。

相關問題