Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sqlite进行Android开发:查询结果为';不要是空的_Android_Sqlite_Android Cursor - Fatal编程技术网

使用sqlite进行Android开发:查询结果为';不要是空的

使用sqlite进行Android开发:查询结果为';不要是空的,android,sqlite,android-cursor,Android,Sqlite,Android Cursor,我有一个相当大的查询,在android外部执行时返回数据,而在android内部执行时不返回任何内容 我将查询分成几个部分,并确定联合是正确的 我尝试了一组较小的具有相同行为的数据 我已经用不同的硬件和API版本进行了测试 我使用的是带有常量值的rawQuery方法。 此查询旨在替换当前不支持的完整外部联接 SELECT IFNULL(stype, gtype) AS type, IFNULL(sdate, gdate) AS date, IFNULL(sroute, groute) AS

我有一个相当大的查询,在android外部执行时返回数据,而在android内部执行时不返回任何内容

  • 我将查询分成几个部分,并确定联合是正确的
  • 我尝试了一组较小的具有相同行为的数据
  • 我已经用不同的硬件和API版本进行了测试
  • 我使用的是带有常量值的rawQuery方法。
此查询旨在替换当前不支持的完整外部联接

SELECT IFNULL(stype, gtype) AS type, IFNULL(sdate, gdate) AS date, IFNULL(sroute, groute) AS route FROM (

SELECT sp.type AS stype, sp.date AS sdate, -1 AS gtype, gp.date AS gdate, sp.route AS sroute, gp.route AS groute
FROM Sensor_Point AS sp LEFT JOIN GPS_Point AS gp ON gp._id IS NULL AND sp.sent=0 AND sp.route=gp.route AND sp.route=1
UNION ALL
SELECT sp.type AS stype, sp.date AS sdate, -1 AS gtype, gp.date AS gdate, sp.route AS sroute, gp.route AS groute
FROM GPS_Point AS gp LEFT JOIN Sensor_Point AS sp ON sp._id IS NULL AND gp.sent=0 AND sp.route=gp.route AND gp.route=1

) WHERE route=1 ORDER BY date ASC LIMIT 255
如有任何提示,将不胜感激

更新:

看起来问题终于出在查询参数上了,如果我这样设置的话:

String[] args = new String[3];
args[0] = args[1] = args[2] = "1"; 
Cursor data dataBase.rawQuery(SELECT_POINTS, args);
当直接在查询中硬编码值时,它不起作用

Cursor data = dataBase.rawQuery(SELECT_POINTS, null);

在Android数据库API中,所有查询参数都是字符串。 (这是一个可怕的设计错误。)

您的查询对应于:

... AND sp.route='1'
尝试将参数字符串转换回如下数字:

... AND sp.route = CAST(? AS INT)

或者直接将数字输入查询字符串。

非常感谢@CL。就是这样!!我首先认为问题与嵌套查询有关,因为子查询在没有任何强制转换的情况下运行良好,但我错了。