2012-06-12 35 views
0

我是使用SQLite數據庫和android移動開發的新手。我正在嘗試檢查編輯文本字段輸入的用戶名是否存在於數據庫中。當我運行它並單擊一個按鈕時,應用程序崩潰。這是我的代碼。當嘗試查找sql​​ite數據庫中是否存在值時出錯

public boolean findUsername(String username) { 
Cursor c = ourDatabase.query(true, DATABASE_TABLE_L, new String[] { 
     KEY_USERID, KEY_USERNAME, KEY_PASSWORD,KEY_SECRETQ,KEY_ANSWER}, KEY_USERNAME + "=" 
     + username, null, null, null, null, null); 
    if (c != null) { 
     return true; 
     } 
     return false; 
    } 
} 

從日誌貓的錯誤指出:

no such column: bobby: , while compiling: SELECT DISTINCT userId, username, password, secretQ, answer FROM Login WHERE username=bobby 

我在做什麼錯?

回答

3

你應該成爲你這樣的查詢

SELECT DISTINCT userId, username, password, secretQ, answer FROM Login WHERE username='bobby' 

你必須把引號的用戶名。

Cursor c = ourDatabase.query(true, DATABASE_TABLE_L, new String[] { 
     KEY_USERID, KEY_USERNAME, KEY_PASSWORD,KEY_SECRETQ,KEY_ANSWER}, KEY_USERNAME + "='" 
     + username +"'", null, null, null, null, null); 

請嘗試以上。

+0

感謝您的回答。它現在工作正常:)另外一個問題,我必須始終指定表中的所有列名稱,如下所示:ourDatabase.query(true,DATABASE_TABLE_L,new String [] { KEY_USERID,KEY_USERNAME,KEY_PASSWORD,KEY_SECRETQ,KEY_ANSWER} –

+0

@Sindu_不,不需要,你也可以指定單列。看到我的回答。 –

+0

@ChiragRaval好的。謝謝。 –

2
Cursor c = ourDatabase.query(true, DATABASE_TABLE_L, new String[] { 
     KEY_USERID, KEY_USERNAME, KEY_PASSWORD,KEY_SECRETQ,KEY_ANSWER}, KEY_USERNAME + "=?", 
     username, null, null, null, null); 
1

試試這個。

Cursor C = ourDatabase.query(DATABASE_TABLE_L, new String[] { 
     KEY_USERID}, KEY_USERNAME + "= ?" , new String[] {username}, null, null,null); 
相關問題