我目前正在使用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");
以下是我的数据片段:
例如,如果ColumnX = Nom
arg1 = L8
和arg2 = 380
,那么我希望得到25但光标始终返回Nom列的第一个元素。
我错过了一些基本的东西吗?
答案 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");