繁体   English   中英

Android SQLite奇怪的问题

[英]Android SQLite strange issue

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

我建议您在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);

解决这个问题的简单方法就是将查询括在以下内容中:

if (userName =! "user") {
//code here
} else {
//open dialog about invalid username
}

尽管我敢肯定有一个更优雅的解决方案。 无论如何,应该对输入数据进行清理,如果您已经在检查无效数据,也许只需在拒绝列表中添加“用户”?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM