3 回答

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

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您寫(xiě)了錯(cuò)誤的查詢(xún)。下面的查詢(xún)將起作用,但為什么您要使用用戶(hù)名和密碼本身編寫(xiě)查詢(xún)來(lái)獲取用戶(hù)名和密碼,因此,要么在 select 語(yǔ)句中寫(xiě)入所需的列名,要么只為整個(gè)記錄寫(xiě)入 * 。
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貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的查詢(xún)是錯(cuò)誤的,請(qǐng)通過(guò)控制臺(tái)打印查看最終查詢(xún)。你的代碼應(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+"'");
添加回答
舉報(bào)