1

我正在尝试将许多参数传递给 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);

但它返回一个空游标。请问有什么帮助吗?谢谢你。

4

3 回答 3

0

从查询中删除表关键字。

并且您在查询对象中总共有 10 个(?),在 args 中您提供的参数有 9 个参数。

所以给出总共 10 个参数。

于 2012-04-11T07:33:18.557 回答
0

好吧,我不确定,但这可能是一个原因。在表名之前我从未见过任何使用TABLE的查询

代替

SELECT TA.ID FROM TABLE TA.............

只需使用

SELECT TA.ID FROM TA..............

另一件事是你有10 ?在您的查询中,您传递一个包含9 个元素的字符串数组作为选择参数。

于 2012-04-11T07:18:19.967 回答
0

也许空光标是正确的结果?您可能想去模拟器控制台并在那里执行相同的 sql 以确保。

正如他们在http://developer.android.com/guide/developing/tools/adb.html “从远程外壳检查 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  
于 2012-04-11T07:20:35.333 回答