Android SQLite奇怪问题

发布于 2024-11-02 19:12:48 字数 377 浏览 0 评论 0原文

在我的应用程序中,我有一个具有该结构的数据库表: 用户文本 |令牌文本

当我请求检查表中是否存在该用户时,如下所示:

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 检查表结构,并返回给我所有记录,因为该列的名称等于我正在使用的值 - user。

In my app I have one DB table with that structure:
user TEXT | token text

When I'm doing request to check if this user exist in table, like that:

String whereClause = COLUMN_USER + "==\"" + userName + "\"";
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, null, null, null, null);

It works for all users. But if variable userName is "user" I got all records back.
Looks like sqllite checks table structure, and return to me all records 'cos name of this column equals to my value that I'm using - user.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏了南城 2024-11-09 19:12:48

我建议您参数化 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);

I suggest you parameterize the arguments in your where clause:

String whereClause = COLUMN_USER + "=?";
String [] whereArgs = { userName };
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, whereArgs, null, null, null);
天气好吗我好吗 2024-11-09 19:12:48

解决这个问题的一个简单方法就是简单地将查询包含在:

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

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

A simple kludge to get rid of this problem would be simply to enclose the query in:

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

Although i'm sure there's a more elegant solution. Input Data sanitizing should be done anyways, and if you're already checking for invalids, maybe just add "user" into the list of rejecteds?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文