【问题标题】:Sqlite Get x rows, then next x rowsSqlite 获取 x 行,然后下 x 行
【发布时间】:2014-10-19 15:08:09
【问题描述】:

我正在开发使用 SQLite 数据库的 Android 应用程序。

我有 ListView,它使用数据库中的数据来显示列表(见图)。

图片以Base64字符串解码并存储在数据库中。我的问题是这个日志:

10-19 16:51:36.612: W/CursorWindow(15151): Window is full: 
requested allocation 136877 bytes, free space 78836 bytes, window size 2097152 bytes

它会播放很多帧,因为读取时间会增加。 这是因为我总是阅读 x+10 行。 第一次,它读取 10 行,然后是 20 行,然后是 30 行,然后继续……

我想要使用的解决方案是从 0-10、11-20、21-30 等获取行。如何做到这一点?我只需要 Sql 查询。

编辑:我的查询

String columns[] = {KEY_ID, KEY_NAME, KEY_RATING, KEY_CUISINE, KEY_IMAGE};
Cursor cursor = db.query(TABLE_RECIPES, columns, null, null, null, null, KEY_NAME, lim);

【问题讨论】:

    标签: android sql


    【解决方案1】:

    使用 rawQuery 方法,并指定 limit 关键字。

    例如:

    "SELECT * FROM myTable limit 10" <-- get the 1st 10 rows
    "SELECT * FROM myTable limit 10, 20" <-- get the 2nd 10 rows between 10 and 20, etc
    

    这应该让你开始。

    【讨论】:

    • 另外,您可以使用 query() 在限制参数上设置类似“10, 20”的字符串。 :)
    • "SELECT * FROM myTable limit 10, 20" 这将提供从 11 到 30 的 20 行。
    【解决方案2】:

    我试过上面的答案,结果是:

    "SELECT * FROM myTable limit 10" <-- Got the first 10 rows
    "SELECT * FROM myTable limit 10, 20" <-- Got the first 20 rows !
    

    所以上面的答案对我不起作用,对我有用的是:

    这是我的桌子:

    要获得前 10 个

    select * from quran_text where sura = 2 limit 0, 10
    

    第二十:

    select * from quran_text where sura = 2 limit 10, 10
    

    第三个10:

    select * from quran_text where sura = 2 limit 20, 10
    

    在图片中它只显示了 5 条记录 cuz 的空间,但它得到了正确的结果。

    所以让它成为模式:

    在这里获得前 10 个 X = 1;

    在 java 中创建查询:

    String query = "select * from quran_text where sura = 2 limit "+((X-1)*10)+", 10";
    

    【讨论】:

      【解决方案3】:

      注意语法:

      LIMIT row_count OFFSET offset;
      

      LIMIT offset, row_count;
      

      参数顺序不一样

      【讨论】:

        猜你喜欢
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-28
        • 1970-01-01
        相关资源
        最近更新 更多