为了账号安全,请及时绑定邮箱和手机立即绑定

编写 SQLite 数据库查询来获取用户并传递表单用户表的正确方法是什么

编写 SQLite 数据库查询来获取用户并传递表单用户表的正确方法是什么

皈依舞 2023-06-28 16:12:01
我有用户信息表,需要获取用户密码和用户用户名查询: Cursor cursor = db.rawQuery("select "+User.COL_NAME +User.COL_PASS +" from " + User.TABLE_NAME+" WHERE "+User.COL_NAME+ User.COL_PASS +"=?", new String[]{UserName , PassWord});但我不能这样做,错误消息是:   Caused by: android.database.sqlite.SQLiteException: no such column: UserNamePassword (code 1): , while compiling: select UserNamePassword from users WHERE UserNamePassword=?这是我的代码public String getUserByUserAndPassword(String UserName , String PassWord) {    String All_info="" ;    Cursor cursor = db.rawQuery("select "+User.COL_NAME +User.COL_PASS +" from " + User.TABLE_NAME+" WHERE "+User.COL_NAME+ User.COL_PASS +"=?", new String[]{UserName , PassWord});    while (cursor.moveToNext()) {        String user_1 = cursor.getString(cursor.getColumnIndex(User.COL_NAME));        String pass_1 = cursor.getString(cursor.getColumnIndex(User.COL_PASS));        All_info= user_1+"/"+pass_1;    }    cursor.close();    return All_info ;}引起原因:android.database.sqlite.SQLiteException:没有这样的列:UserNamePassword(代码1):,编译时:从用户中选择UserNamePassword WHERE UserNamePassword=?
查看完整描述

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;


查看完整回答
反对 回复 2023-06-28
?
肥皂起泡泡

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});



查看完整回答
反对 回复 2023-06-28
?
吃鸡游戏

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+"'");



查看完整回答
反对 回复 2023-06-28
  • 3 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信