2011-04-21 136 views
0

在我的應用程序,我有一個數據庫表的結構: user TEXT |標記文本Android SQLite奇怪的問題

當我在做的請求,以檢查是否該用戶在表中,這樣的:

String whereClause = COLUMN_USER + "==\"" + userName + "\""; 
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, null, null, null, null); 

它適用於所有用戶。但是,如果變量userName是「用戶」,我將所有記錄都備份回來。 看起來像sqllite檢查表結構,並返回給我所有記錄的這個列的COS名稱等於我使用的價值 - 用戶。

回答

1

我建議你參數的參數的WHERE子句中:

String whereClause = COLUMN_USER + "=?"; 
String [] whereArgs = { userName }; 
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, whereArgs, null, null, null); 
+0

謝謝!這對我行得通! – Redwid 2011-04-21 08:36:36

0

一個簡單的組裝機來擺脫這個問題將是簡單地附上該查詢:

if (userName =! "user") { 
//code here 
} else { 
//open dialog about invalid username 
} 

雖然我敢肯定有一個更好的解決方案。輸入數據消毒應該無論如何都應該完成,如果您已經在檢查殘疾人,可能只需將「用戶」添加到拒絕列表中?

+0

應用程序是一個在線服務客戶。幾乎所有的名字都應該是有效的。 – Redwid 2011-04-21 08:37:24