【问题标题】:android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR[1]): Androidandroid.database.sqlite.SQLiteException:靠近“GROUP”:语法错误(代码 1 SQLITE_ERROR[1]):Android
【发布时间】:2020-06-23 15:36:22
【问题描述】:

我需要获取自定义应用程序的手机媒体数据并且我使用了查询,但它在我的代码中显示某些 Android 设备的错误,并且仅在某些设备上显示语法错误。

    @Override
    public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
        String[] PROJECTION_BUCKET = {
                MediaStore.Images.ImageColumns._ID,
                MediaStore.Images.ImageColumns.BUCKET_ID,
                MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
                MediaStore.Images.ImageColumns.DATE_TAKEN,
                MediaStore.Images.ImageColumns.DATA,
                MediaStore.Images.ImageColumns.MINI_THUMB_MAGIC};
        String BUCKET_GROUP_BY =
                "2) GROUP BY 2,(3";
        String BUCKET_ORDER_BY = "MAX(datetaken) DESC";

        // Get the base URI for the People table in the Contacts content provider.
        Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

        Cursor cursor = getContext().getContentResolver().query(
                images, PROJECTION_BUCKET, BUCKET_GROUP_BY, null, BUCKET_ORDER_BY);
        cursor.moveToNext();




        String selection = "WHERE "+MediaStore.Images.Media.BUCKET_ID+" = 1030343353";

        return new CursorLoader(getContext(), uri, PROJECTION_BUCKET, BUCKET_GROUP_BY, null, BUCKET_ORDER_BY);
    }```

and here error 

android.database.sqlite.SQLiteException: near "GROUP": syntax error (code 1 SQLITE_ERROR[1]): , while compiling: SELECT _id, bucket_id, bucket_display_name, datetaken, _data, mini_thumb_magic FROM images WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' )) AND (_data>'')) AND ((2) GROUP BY 2,(3)) ORDER BY MAX(datetaken) DESC

【问题讨论】:

    标签: android sqlite media-queries


    【解决方案1】:

    您的问题没有简单的解决方法。如果你看这里https://developer.android.com/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String),你会注意到:

    • 您正在尝试将“分组依据”的内容传递到 formatted as an SQL WHERE clause (excluding the WHERE itself) 的字段中
    • 对于您正在使用的特定查询,没有“分组依据”之类的东西

    您的语法错误可以很容易地修复,但恐怕结果不会是您所期望的。您应该将查询策略更改为其他内容,可能类似于原始查询。

    【讨论】:

    • 我想从手机中获取媒体作为相册
    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多