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

我有用户信息表,需要获取用户密码和用户用户名查询:


 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=?


皈依舞
浏览 154回答 3
3回答

杨__羊羊

您的查询存在语法错误,但首先我想提及代码中逻辑上错误的其他部分。你的查询应该返回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;

肥皂起泡泡

您写了错误的查询。下面的查询将起作用,但为什么您要使用用户名和密码本身编写查询来获取用户名和密码,因此,要么在 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});

吃鸡游戏

您的查询是错误的,请通过控制台打印查看最终查询。你的代码应该是: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+"'");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java