在我的应用程序中,我有一个具有该结构的数据库表: 用户TEXT |令牌文字
当我正在请求检查该用户是否存在于表中时,如下所示:
String whereClause = COLUMN_USER + "==\"" + userName + "\"";
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, null, null, null, null);
适用于所有用户。但如果变量userName是“user”,我会收回所有记录。 看起来像sqllite检查表结构,并返回给我所有记录'此列的cos名称等于我正在使用的值 - 用户。
答案 0 :(得分:1)
我建议你在where子句中参数化参数:
String whereClause = COLUMN_USER + "=?";
String [] whereArgs = { userName };
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, whereArgs, null, null, null);
答案 1 :(得分:0)
解决这个问题的简单方法就是将查询包含在:
中if (userName =! "user") {
//code here
} else {
//open dialog about invalid username
}
虽然我确信有更优雅的解决方案。无论如何都应该进行输入数据清理,如果您已经检查了残障人士,可能只是将“用户”添加到被拒绝的列表中?