SQLite查询>操作员不工作

时间:2014-10-25 10:21:22

标签: android sqlite

我目前正在使用android-sqlite-asset-helper加载我创建的SQLite数据库。目前,我无法使用以下查询:

SELECT ColumnX FROM TABLE WHERE L6 > 381 Limit 1;

此查询使用以下代码构建:

SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] args = {arg1, arg2};
qb.setTables(TABLENAME);
Cursor c = qb.query(db, new String[] {"ColumnX"}, "? > ?", args, null, null, null, "1");

以下是我的数据片段: enter image description here

例如,如果ColumnX = Nom arg1 = L8arg2 = 380,那么我希望得到25但光标始终返回Nom列的第一个元素。

我错过了一些基本的东西吗?

2 个答案:

答案 0 :(得分:2)

您可以使用?仅绑定文字,而不是列名称等标识符。因此L8绑定为字符串文字'L8'而不是列名L8

如果需要使列名称动态化,则需要使用常规的Java字符串格式化方法,例如String.format()StringBuilder

答案 1 :(得分:1)

我猜你的列是整数类型。当你替换?使用arg2将其转换为字符串。

所以最后你要打电话:

SELECT ColumnX FROM TABLE WHERE L6 > '381' Limit 1;

要解决此问题,请手动插入整数:

Cursor c = qb.query(db,
        new String[] {"Nom"},
        "? > " + arg2,
        new String[] { arg1 },
        null, null, null, "1");