编写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.SQLite异常:没有这样的列:用户名密码(代码1(:,编译时:从用户中选择用户名密码,其中用户名密码=?

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

如果没有这样的用户,则此查询将仅返回 1 行和 1 个整数列,值为0,如果有,则返回值1
其余代码需要:

if (cursor.moveToFirst()) {
int counter = cursor.getInt(0);
if (counter > 0) {
All_info= UserName + "/" + PassWord;
}
}
cursor.close();
return All_info;

您的查询是错误的,请参阅控制台中打印的最终查询。您的代码应该是:

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

你写错了查询。下面的查询将起作用,但为什么您编写查询以使用用户名和密码本身获取用户名和密码,因此,要么在 select 语句中为整条记录编写所需的column_names或仅 *。

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

最新更新