我正在尝试将许多参数传递给Android中的查询。 我正在做的是以下内容:
String final QUERY = "SELECT TA.ID FROM TAB TA LEFT JOIN PROP P ON P.ID = TA.ID LEFT JOIN LOC L ON L.ID = TA.ID LEFT JOIN TIME T ON T.ID = TA.ID WHERE (COALESCE(LONG,?) - ?) * (COALESCE(LONG,?) - ?) + (COALESCE(LAT,?) - ?) * (COALESCE(LAT,?) - ?) <=COALESCE(VALUE,0)*COALESCE(VALUE,0) AND ? BETWEEN COALESCE(BEGIN,0) AND COALESCE(END, 123456)";
String[] args= {"" + val1, "" + val2, "" + val3, "" + val4, "" + val5, "" val6, "" + val7, "" + val8, "" + val9}
cursor = db.rawQuery(QUERY,args);
但它返回一个空光标。 有什么帮助吗?谢谢。
答案 0 :(得分:0)
嗯,我不确定,但这可能是一个原因。我在表名
之前从未见过任何关于 TABLE 的查询而不是
SELECT TA.ID FROM TABLE TA.............
只需使用
SELECT TA.ID FROM TA..............
另一件事是你的查询中有 10?,你传递一个 9个元素的字符串数组作为选择参数。
答案 1 :(得分:0)
也许空光标是正确的结果?您可能希望转到模拟器控制台并在那里执行相同的sql以确保。
他们写在http://developer.android.com/guide/developing/tools/adb.html “从远程Shell检查sqlite3数据库”
$ adb -s emulator-5554 shell
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions
.... enter commands, then quit...
sqlite> .exit
答案 2 :(得分:0)
从查询中删除表关键字。
你在查询对象中总共有10个(?),在args中你给出了9个参数的参数。
所以总共给出10个参数。