3 回答

TA貢獻1943條經(jīng)驗 獲得超7個贊
您的查詢存在語法錯誤,但首先我想提及代碼中邏輯上錯誤的其他部分。
你的查詢應(yīng)該返回0or 1row 因為我猜不存在 2 個用戶具有相同用戶名的情況,對吧?
所以不需要循環(huán)while。一個簡單的if聲明就足夠了。
另外為什么要查詢返回用戶名和密碼?
您已經(jīng)認識它們,因為您使用它們來搜索該用戶。
如果沒有用戶擁有這些數(shù)據(jù),則查詢將不會返回任何內(nèi)容。
因此,將您的查詢更改為:
Cursor cursor = db.rawQuery(
"SELECT COUNT(*) FROM " + User.TABLE_NAME +
" WHERE "+ User.COL_NAME + " = ? AND " + User.COL_PASS +" = ?",
new String[]{UserName , PassWord}
);
0如果不存在這樣的用戶,或者1存在的話,此查詢將僅返回 1 行和 1 個帶有值的整數(shù)列。
其余的代碼需要:
if (cursor.moveToFirst()) {
int counter = cursor.getInt(0);
if (counter > 0) {
All_info= UserName + "/" + PassWord;
}
}
cursor.close();
return All_info;

TA貢獻1829條經(jīng)驗 獲得超6個贊
您寫了錯誤的查詢。下面的查詢將起作用,但為什么您要使用用戶名和密碼本身編寫查詢來獲取用戶名和密碼,因此,要么在 select 語句中寫入所需的列名,要么只為整個記錄寫入 * 。
Cursor cursor = db.rawQuery("select "+User.COL_NAME +", "+User.COL_PASS +" from " + User.TABLE_NAME+" WHERE "+User.COL_NAME+ "=?" + "and" + User.COL_PASS +"=?", new String[]{UserName , PassWord});

TA貢獻1829條經(jīng)驗 獲得超7個贊
您的查詢是錯誤的,請通過控制臺打印查看最終查詢。你的代碼應(yīng)該是:
Cursor cursor = db.rawQuery("select "+User.COL_NAME +", "+User.COL_PASS +" from " + User.TABLE_NAME+" WHERE "+User.COL_NAME+"='"+UserName+"' AND "+ User.COL_PASS +"='"+PassWord+"'");
添加回答
舉報