2015-04-01 142 views
-1

使用SQLite數據庫,我添加了一行,每行有6列。第一列是「人」的名字。我擁有它,所以當你點擊列表視圖中的人時,它會彈出一個包含5個編輯文本的屏幕。您填寫並提交它並將其添加到數據庫中的另一行。SQLite使用SELECT獲取行數據

稍後要檢索該數據,我試圖使用SELECT來獲取它,但無法弄清楚它是如何工作的。

public Cursor getChildRulesInformation(DatabaseOperations dop, String name) { 
    dop.getReadableDatabase().execSQL("SELECT * FROM "+CHILD_RULES_TABLE_NAME+" WHERE "+CHILD_NAME + "=\""+ name+"\""); 
} 

我該怎麼做才能檢索該特定行內的每一列。我對這個過程感到困惑。

任何領先的寫作方向將不勝感激。謝謝。如果您需要更多信息,請告訴我。

回答

-1

不要使用execSql獲取數據,這只是爲了將數據發送到數據庫。相反,如果您想使用String,請使用rawQuery。所以它會是:

public Cursor getChildRulesInformation(DatabaseOperations dop, String name) { 
    return dop.getReadableDatabase().rawQuery("SELECT * FROM "+CHILD_RULES_TABLE_NAME+" WHERE "+CHILD_NAME + "='"+ name+"'", null); 
} 

這會返回您正在查找的光標對象。

+0

因此,將返回光標在具有「名」行的位置,我在找什麼?然後使用該光標選擇每個文件。感謝您及時的回覆。我現在就試試看。 – ZWis212 2015-04-01 02:52:46

+0

是的。您通常會想要執行if(cursor.moveToFirst()){//使用遊標的數據}來確保遊標實際上有數據。如果您不先檢查,並且它回到空白狀態,並嘗試使用這些數據,則您的應用程序將崩潰。 – Zamereon 2015-04-01 02:55:41

+0

這是有道理的。要刪除一行,我使用了刪除方法,它工作。但現在這就是說它不能找到「Zack」這一行,儘管我剛剛添加了一行。那個rawQuery中的代碼是正確的嗎?在刪除一個我有這個------> dop.getWritableDatabase()。delete(「child_info」,「child_name =?」,new String [] {name}); – ZWis212 2015-04-01 03:05:48

2

試試這個,

public Cursor getChildRulesInformation(DatabaseOperations dop, String name) { 
return dop.getReadableDatabase().rawQuery("SELECT * FROM "+CHILD_RULES_TABLE_NAME+" WHERE "+CHILD_NAME+" = '"+ name+"' ", null);}