在Android中向查询传递参数

在Android中向查询传递参数,android,Android,我试图在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,?)

我试图在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);

String final QUERY=“从选项卡中选择TA.ID P.ID上的TA LEFT JOIN PROP P=L.ID上的TA.ID LEFT JOIN LOC L=T.ID上的TA.ID LEFT JOIN TIME T=TA.ID,其中(COALESCE(LONG),-?)*(COALESCE(LONG),-)+(COALESCE(LAT),-)*(COALESCE(LAT),-)我不确定,但这可能是一个原因。在表名之前,我从未见过任何关于的查询

而不是

SELECT TA.ID FROM TABLE TA.............
只用

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

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

也许空光标是正确的结果?您可能希望转到emulator控制台并在那里执行相同的sql以确保

当他们写在 “从远程Shell检查sqlite3数据库”


从查询中删除表关键字

查询对象中总共有10(?),参数中有9个参数


因此,总共给出10个参数。

在这种情况下,不会抛出SQLiteException吗?@Alex只是因为混淆,我在回答前加了前缀“嗯,我不确定”啊,对不起,我键入错误。正确的查询如下:字符串最终查询=”从表中选择TA.ID:P.ID上的TA LEFT JOIN PROP P=L.ID上的TA.ID LEFT JOIN LOC L=T.ID上的TA.ID LEFT JOIN TIME T=TA.ID,其中(聚结(长),短)*(聚结(长),长)-?+(聚结(横向),短)*(聚结(横向),短)-?)。查询是正确的,结果不是空的。问题是我无法在代码中编写查询。关键字表已从查询中删除。问题已更新。仍然不起作用。
$ 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