3 回答
TA贡献1943条经验 获得超7个赞
您的查询存在语法错误,但首先我想提及代码中逻辑上错误的其他部分。
你的查询应该返回0or 1row 因为我猜不存在 2 个用户具有相同用户名的情况,对吧?
所以不需要循环while。一个简单的if声明就足够了。
另外为什么要查询返回用户名和密码?
您已经认识它们,因为您使用它们来搜索该用户。
如果没有用户拥有这些数据,则查询将不会返回任何内容。
因此,将您的查询更改为:
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 个带有值的整数列。
其余的代码需要:
if (cursor.moveToFirst()) {
int counter = cursor.getInt(0);
if (counter > 0) {
All_info= UserName + "/" + PassWord;
}
}
cursor.close();
return All_info;
TA贡献1829条经验 获得超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条经验 获得超7个赞
您的查询是错误的,请通过控制台打印查看最终查询。你的代码应该是:
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+"'");
添加回答
举报