首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLiteDatabase IllegalArgumentException

SQLiteDatabase IllegalArgumentException
EN

Stack Overflow用户
提问于 2017-04-28 16:47:32
回答 1查看 89关注 0票数 0

我在使用自定义SQLiteDatabase查询我的ContentProvider时遇到了困难。我试图使用' user _id‘查询数据库中的一个用户。与此问题相关的代码如下:

DBProvider.java

代码语言:javascript
复制
@Override
    public Cursor query(Uri uri, String[] projection, String selection,
                            String[] selectionArgs, String sortOrder){
        int match_code = myUriMatcher.match(uri);
        Cursor c;
        switch (match_code){
            case USER_BY_ID: {
                c = dbHelper.getReadableDatabase().query(
                        DBContract.User_Table.TABLE_NAME,
                        projection,
                        DBContract.User_Table.COLUMN_ID + "='" + ContentUris.parseId(uri) + "'",
                        selectionArgs,
                        null,
                        null,
                        sortOrder
                );
                break;
            }
            default:
                throw new UnsupportedOperationException("Not yet implemented");
        }
        c.setNotificationUri(getContext().getContentResolver(), uri);
        return c;
}

ProfileActivity.java

代码语言:javascript
复制
// Columns to load
        String[] columns = {
                DBContract.User_Table.COLUMN_NAME // String "name"
        };
// A cursor is your primary interface to the query results.
        Cursor cursor = getActivity().getContentResolver().query(
                ContentUris.withAppendedId(DBContract.User_Table.CONTENT_URI, Long.parseLong(id)), // Table to Query
                columns, // Columns for the WHERE
                DBContract.User_Table.COLUMN_ID, // selection
                new String[]{"1"}, // Values for the WHERE
                null // Sort Args
        );

我得到的错误是:

代码语言:javascript
复制
java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range.  The statement has 0 parameters.

任何帮助都将不胜感激!谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 18:14:04

你应该使用:

代码语言:javascript
复制
Cursor cursor = getActivity().getContentResolver().query(
                ContentUris.withAppendedId(DBContract.User_Table.CONTENT_URI, Long.parseLong(id)), // Table to Query
                columns, // Columns for the WHERE
                DBContract.User_Table.COLUMN_ID, // selection
                null, // Values for the WHERE
                null // Sort Args
        );

selectionArgs参数使用错误。在?参数中没有任何selection,并且绑定失败。更多信息在文档

selectionArgs --您可以在选择中包括?s,它将被来自selectionArgs的值所取代,其顺序是它们在所选内容中出现。这些值将被绑定为String。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43685201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档