我不能使用ORMLite库在java(android)中执行"WITH RECURSIVE"子句

use*_*772 1 java sql sqlite android ormlite

我在这个查询上遇到了问题:

WITH RECURSIVE dates(d)
AS (VALUES('2014-03-01')
    UNION ALL
    SELECT date(d, '+1 day')
    FROM dates
    WHERE d < '2014-03-31')
SELECT d AS date
Run Code Online (Sandbox Code Playgroud)

如果我在专用的SqLite的Windows应用程序上执行此查询,查询工作正常.

如果我在我的Android应用程序上执行此查询,我会收到此消息作为日志:

/com.robertot.timereport E/SQLiteLog? (1) near "WITH": syntax error
/com.robertot.timereport W/System.err? java.sql.SQLException: Could not perform raw query for WITH RECURSIVE dates(d) AS (VALUES('2014-04-28') UNION ALL SELECT date(d, '+1 day') FROM dates WHERE d < '2014-06-01') SELECT d AS date
Run Code Online (Sandbox Code Playgroud)

我不明白为什么......

无论如何,这是我的java代码:

GenericRawResults<String[]> rawResults;
List<String[]> results = null;
DbHelperJob findjob = new DbHelperJob(getActivity());

      try
        {
            rawResults = findjob.getJobDao().queryRaw("WITH RECURSIVE dates(d) " +
                                                        "AS (VALUES('" + firstWeek + "') " +
                                                        "UNION ALL " +
                                                        "SELECT date(d, '+1 day') " +
                                                        "FROM dates " +
                                                        "WHERE d < '" + lastWeek + "') " +
                                                        "SELECT d AS date"

            results = rawResults.getResults();
            findjob.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

谢谢!!:)

Gre*_*eek 5

根据这个,你正在寻找的语法是在SQLite 3.8.3中添加但是根据这个,KitKat使用3.7.11

所以,Android上还没有支持它.