[英]Select statement in SQLite does not return result
然后,以下必須返回存儲在數據庫中的用戶的密碼
public String getPasswordByUsername(String userName)
{
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_USERS + " WHERE "
+ KEY_USERS_USERNAME + " = " + userName;
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.getCount() < 1) {
cursor.close();
return "NOT EXIST";
}
cursor.moveToFirst();
String password = cursor.getString(cursor.getColumnIndex("password"));
cursor.close();
return password;
}
當我嘗試獲取用戶“ w”的密碼時,得到:
12-24 10:54:23.639: E/AndroidRuntime(11237): FATAL EXCEPTION: main
12-24 10:54:23.639: E/AndroidRuntime(11237): Process: com.example.doit, PID: 11237
12-24 10:54:23.639: E/AndroidRuntime(11237): android.database.sqlite.SQLiteException: no such column: w (code 1): , while compiling: SELECT password FROM users WHERE username = w
如何獲取正確的密碼? 謝謝。
變化" = " + userName
到: " = '" + username+ "'"
更改為這個簡單的甲:
我認為這很有幫助。
更改為此:(包括引號)
String selectQuery = "SELECT * FROM " + TABLE_USERS + " WHERE "
+ KEY_USERS_USERNAME + " = '" + userName + "'";
目前,您正在創建不帶引號的SQL字符串,因此不會將其視為字符串,而是將其視為列名。 不存在。
正確的方法是將username
傳遞到rawQuery
的第二個參數/ arg中的selectionArgs
中,例如:
String selectQuery = "SELECT * FROM " + TABLE_USERS + " WHERE "
+ KEY_USERS_USERNAME + " = ?";
Cursor cursor = db.rawQuery(selectQuery, new String[]{ username });
這樣,如果您的username
值為w
甚至"w'
,它將在執行的結果sql語句中正確轉義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.