【问题标题】:how to query the sqlite using limit如何使用限制查询sqlite
【发布时间】:2012-02-22 01:51:07
【问题描述】:

我这样写选择查询:

'字符串选择3 = TriplePayProviderMetaData.ProgramTableMetaData.PROGRAM_LCN + " = '" + channelLcn + "'" + " AND " + TriplePayProviderMetaData.ProgramTableMetaData.PROGRAM_START_TIME + " > " + " '" + 时间 + "'" + " LIMIT " + " '" + 3 + "'";'

但它说语法错误在限制:

'android.database.sqlite.SQLiteException:在“LIMIT”附近:语法错误: , 编译时: SELECT title, lcn, _id, end_time, description, program_logo, start_time, rating, parent_guide 来自节目 WHERE (lcn = '100' AND start_time > '1327026600000' LIMIT '3') ORDER BY start_time ASC E/AndroidRuntime(15912):在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158) E/AndroidRuntime(15912):在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) E/AndroidRuntime(15912):在 android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) E/AndroidRuntime(15912):在 android.content.ContentProviderProxy.query(ContentProviderNative.java:366) E/AndroidRuntime(15912):在 android.content.ContentProviderClient.query(ContentProviderClient.java:49) E/AndroidRuntime(15912):在 com.vovinet.miniepguru.MiniEpgActivity$1.onClick(MiniEpgActivity.java:150) E/AndroidRuntime(15912):在 android.view.View.performClick(View.java:2485) E/AndroidRuntime(15912):在 android.view.View.onKeyUp(View.java:4257) E/AndroidRuntime(15912):
在 android.view.KeyEvent.dispatch(KeyEvent.java:1280) E/AndroidRuntime(15912):在 android.view.View.dispatchKeyE W/ActivityManager(1133):强制完成活动 com.vovinet.miniepguru/.MiniEpgActivity W/ActivityManager(1133): HistoryRecord{40630af0 的活动暂停超时 com.vovinet.miniepguru/.MiniEpgActivity}'

【问题讨论】:

    标签: android


    【解决方案1】:

    您正在以字符串的形式传递限制。限制是一个整数值。所以从限制中删除"'"标签。

    Limit也有两个参数

    限制 0 , 10

    第一个值 0 表示开始从 0 位置获取记录。第二个值 10 显示从起始位置获取然后记录。所以它会返回 第 10 条记录。

    如果你说 10 , 10。它将从光标处得到 10-20 条记录。作为 起始位置是 10,记录数也是 10。

    您也可以查看此链接 http://www.sqlite.org/lang_select.html

    已编辑: 您的查询是

    SELECT title, lcn, _id, end_time, description, program_logo, start_time, rating, parent_guide FROM programs WHERE (lcn = '100' AND start_time > '1327026600000' LIMIT 0 , 3) ORDER BY start_time ASC

    基本上你加错了限制

    在 ORDER BY cluse 之后使用 LIMIT(查看链接http://www.sqlite.org/lang_select.html

    应该是

    SELECT title, lcn, _id, end_time, description, program_logo, start_time, rating, parent_guide FROM programs WHERE (lcn = '100' AND start_time > '1327026600000') ORDER BY start_time ASC LIMIT 0 , 3

    【讨论】:

    • hello arslan 感谢您的快速响应。如果我像上面那样使用但它给出了相同的错误`android.database.sqlite.SQLiteException: near "LIMIT": syntax error: ,编译时: SELECT title, lcn, _id, end_time, description, program_logo, start_time, rating, parent_guide FROM programs WHERE (lcn = '100' AND start_time > '1327026600000' LIMIT 0 , 3) ORDER BY start_time ASC`
    • 感谢回复,通过使用上面的选择查询如何编写查询得到结果SELECT title, lcn, _id, end_time, description, program_logo, start_time, rating, parent_guide FROM programs WHERE (lcn = '100' AND start_time > '1327026600000') ORDER BY start_time ASC LIMIT 0 , 3这样。
    【解决方案2】:

    事实上,SQLiteDatabase 有一个函数来做这件事。

    公共游标查询(字符串表、字符串 [] 列、字符串选择、字符串 [] selectionArgs、字符串 groupBy、字符串有、字符串 orderBy、字符串限制) 查询给定的表,在结果集上返回一个 Cursor。

    limit 限制查询返回的行数,格式为 LIMIT 子句。传递 null 表示没有 LIMIT 子句。

    请看here

    【讨论】:

    • 嗨休伯特感谢您的回复,实际上我正在从数据库内容提供商查询数据。所以如果我通过上述论点进行查询,它会给出编译错误,tupe 内容提供商客户端中的方法查询不适用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多