2015-08-31 19 views
-5

我在我的Android項目中有一個表,有3列,我只想從表中的主要活動中的一列(字符串值)中獲取特定值.. 我使用此代碼但它返回整個列表,我只是想根據條件一個值從光標檢索一個字符串值

公開名單getAlltableList(){

List <AI_TABLE> tableArrayList = new ArrayList <AI_TABLE>(); 

    String selectQuery = "SELECT * FROM " + AI_TABLE; 

    Log.d (TAG, selectQuery); 

    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor c = db.rawQuery (selectQuery, null); 


    // looping through all rows and adding to list 

如果(!c.isAfterLast())

c.moveToFirst(); 

    while (!c.isAfterLast()){ 

      AI_TABLE table = new AI_TABLE(); 

      table.ID = c.getInt(c.getColumnIndex(ID)); 

      table.Q = c.getString(c.getColumnIndex(Q)); 

      table.Q_ID = c.getString(c.getColumnIndex(Q_ID)); 

      table.A = c.getString(c.getColumnIndex(A)); 

      // adding to Students list 

      tableArrayList.add(table); 

     c.moveToNext(); 

     } 

    return tableArrayList; 
} 
+0

你已經寫了查詢,它會返回你所有的數據表,根據你的需要修改你的查詢 –

+0

我應該用什麼來代替列表? –

回答

1

通過添加Where條件,像這樣

更改您的查詢字符串
String selectQuery = "SELECT some_column FROM " + AI_TABLE + " WHERE some_field = ?" ; 

然後,只需添加一個選擇參數,當你查詢數據庫

Cursor c = db.rawQuery (selectQuery, new String[] {"SOME_VALUE"}); 

這隻會some_column返回到some_field等於「SOME_VALUE」

光標
+0

java.lang.IllegalStateException:無法從CursorWindow讀取第0行,第1列。在從中訪問數據之前,確保Cursor已正確初始化。 –

+0

我如何解決上述錯誤...請幫助 –

+0

這意味着光標還沒有移動。您需要至少將其設置爲第一行,方法是:c.moveToFirst();在此之後,您可以訪問其行。如果你已經這樣做了,只需說c.getString(0);這將得到第一列。由於您在查詢中只有一列,因此您可以訪問它。 –

0

只是做投影的查詢只選擇列,你想在喜歡的'SELECT column_name from' + AI_TABLE東西,然後就從光標獲取與指數0柱