如何在Android中编写Sql查询

如何在Android中编写Sql查询,android,sql,sqlite,Android,Sql,Sqlite,我有一个在Sqlite Browse中运行的查询,但当我在Android中编写相同的查询时,它无法正常运行。下面是我编写的SQL查询 SELECT value FROM current_tab WHERE variable = 'currentVehicleSpeed' AND ABS(1 - value) = (SELECT MIN(ABS(1 - value)) FROM current_tab

我有一个在Sqlite Browse中运行的查询,但当我在Android中编写相同的查询时,它无法正常运行。下面是我编写的SQL查询

SELECT value 
FROM current_tab 
WHERE variable = 'currentVehicleSpeed' 
  AND ABS(1 - value) = (SELECT MIN(ABS(1 - value)) 
                        FROM current_tab 
                        WHERE variable = 'currentVehicleSpeed' 
                          AND ABS(1 - value) <= 5)
其中“value”和“variable”是列名

当前_选项卡是表名

var = "currentVehicleSpeed" and valueDouble = 1

感谢您的帮助

您不必在数字上使用文字分隔符:

您的正确查询:

db.rawQuery("SELECT value FROM current_tab WHERE variable = " + var + " AND ABS("
    + valueDouble + " - value) = (SELECT MIN(ABS("
    + valueDouble + " - value)) FROM current_tab WHERE variable = " + var + ") AND ABS(" + valueDouble + " - value <= 5)", null);

你说工作不正常是什么意思?它选择了错误的行,它没有选择任何东西,它抛出了一个错误?您可以发布由您的代码生成的查询吗?它没有选择任何行。它没有给出任何错误您不必在数字上使用文字分隔符!!唐纳,介意解释一下吗?!我的答案是正确的,并且回答了OP问题!!告诉那些否决我答案的人。。。当你这么做的时候,请接受我的回答,如果有帮助的话;虽然人们确实不必用引号来表示数字,但这在这里并不重要。如果需要,字符串文字将自动转换为数字。如果这解决了OP的问题,那么问题可能在其他地方。谢谢你的回答:现在工作正常。。当我说stringField='ABC'和intField=220,最重要的是,当对数字进行算术运算时,比如intField=110*2/4-55,这让我觉得我并没有完全错。我不会依赖SQLite自动类型转换。rawQuery或execSQL中的绑定字段情况不同。但这是Android的Java实现。
db.rawQuery("SELECT value FROM current_tab WHERE variable = " + var + " AND ABS("
    + valueDouble + " - value) = (SELECT MIN(ABS("
    + valueDouble + " - value)) FROM current_tab WHERE variable = " + var + ") AND ABS(" + valueDouble + " - value <= 5)", null);