2015-01-10 94 views
-2

下面是我的代碼片段。 我的查詢確實返回一個值,但我不知道如何提取該值。 showtoast(ID)不顯示任何內容。請幫助SQLite與where子句不工作

try { 
    String ID = null; 
    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null); 
    Cursor allrows = mydb.rawQuery(
     "SELECT REGID FROM " + TABLE + " where NAME = '" + name_from_spinner + "'" , 
     null 
    ); 

    if (allrows.moveToFirst()) { 
     showToast("not empty"); 
     ID = allrows.getString(0); 
     showToast(ID); 
    } else { 
     showToast("empty"); 
    } 

    allrows.close(); 
    mydb.close(); 
} catch (Exception e) { 
    Toast.makeText(
     getApplicationContext(), 
     "Error encountered.", 
     Toast.LENGTH_LONG 
    ); 
} 
+0

閱讀文檔said.my代碼不進入,如果statment,我用了一個別的statment只是爲了看看我的代碼進入if塊,它沒有。我的else塊被執行。請告訴我什麼可能是問題 – Siva

回答

1

您永遠不會從rawQuery獲得空遊標。而是使用moveToFirst

if (allrows.moveToFirst()) { 
    showToast("not empty"); 
    ID = allrows.getString(0); 
    showToast(ID); 
} 

而且因爲你只選擇1列,你知道它的指數將是0

如果您希望收到多列,可以循環光標這樣的:

如何從光標
+0

我不喜歡你讀值

if (allrows.getCount() == 0) { showToast("empty"); } else { while (allrows.moveToNext()) { ID = allrows.getString(0); showToast(ID); } } 

+0

@nainasony這意味着沒有行被發現。 – Simas