Android SQLite奇怪的问题

时间:2011-04-21 07:51:27

标签: android sqlite

在我的应用程序中,我有一个具有该结构的数据库表: 用户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名称等于我正在使用的值 - 用户。

2 个答案:

答案 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
}

虽然我确信有更优雅的解决方案。无论如何都应该进行输入数据清理,如果您已经检查了残障人士,可能只是将“用户”添加到被拒绝的列表中?