繁体   English   中英

Android Sugar ORM 从数据库中选择子列表

[英]Android Sugar ORM select sublist from database

我使用的是Sugar ORM,它实际上是一个用于SQL数据库操作的库。 我的数据库有 4000 多条记录,我想从中检索 500 条记录,比如第 501 到 1000 条记录。

500条记录的提取如下:

db_record_listing = Records.findWithQuery(Records.class, "Select * FROM Records ORDER BY recordId ASC WHERE qref_canton BETWEEN '" + s_start + "' AND '" + s_end + "'");

但是,错误logcat如下:

日志猫:

11-25 23:29:35.639: E/AndroidRuntime(28801): Caused by: android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): , while compiling: Select * FROM Records ORDER BY recordId ASC WHERE qref_canton BETWEEN '1' AND '500'
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
11-25 23:29:35.639: E/AndroidRuntime(28801):    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)

题:

  1. 上面的问题是什么? 我发现如果我删除 ORDER BY 代码可以正常运行(尽管它很慢)。
  2. 系统是否仍然会遍历所有记录,只选择那些在范围内具有recordId的记录,从而很慢? 如果是,是否有更快的方法让系统只检索那 500 条记录而不再检索?
Select * FROM Records WHERE qref_canton BETWEEN '1' AND '500' ORDER BY recordId ASC
    String from = "0";
    String to = "500";

    final List<PropertyTable> propertyTables = PropertyTable.findWithQuery(PropertyTable.class,
            "Select * FROM PROPERTY_TABLE WHERE mortgageprice BETWEEN  ? AND ?",from,to);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM