【问题标题】:Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters无法在索引 1 处绑定参数,因为索引超出范围。该语句有 0 个参数
【发布时间】:2016-11-03 05:54:59
【问题描述】:

我该如何解决这个错误? 我正在使用 SQLite 存储我的数据,我有我的 CursorAdapter.java 和 DBHelper 类,我正在尝试使用 MainActivity 上的所有内容,这是 MainActivity.java 的代码

  ArrayList<ItemsHolder> array_list = new ArrayList<>();
    SQLiteDatabase db = mydb.getReadableDatabase();
    Cursor res =  db.rawQuery("select * from Todo", new String[]{COLUMN_ID});
    while(res.moveToNext()) {
        ItemsHolder itemsHolder = new ItemsHolder();
        itemsHolder.item = res.getString(res.getColumnIndex(ITEM_NAME));
        array_list.add(itemsHolder);
    }
        TodoCursorAdapter todoAdapter = new TodoCursorAdapter(this, res);
        // Attach cursor adapter to the ListView
        lvItems.setAdapter(todoAdapter);

但我不断收到上面提到的错误,这是什么意思?请帮助

【问题讨论】:

标签: java android sqlite android-cursoradapter


【解决方案1】:

您的 SQL ("select * from Todo") 与您传递给它的参数数量 (new String[]{COLUMN_ID}) 不匹配。如果您将参数传递给 db.rawQuery,则您正在运行的 SQL 中必须有占位符。例如,类似:

db.rawQuery("SELECT * FROM todo WHERE column_id = ?", new String[]{COLUMN_ID});

您遇到的错误是因为您将参数传递给查询 (COLUMN_ID),但没有参数(问号)可将值绑定到。

【讨论】:

  • 嘿@Metroids 我这样做了,现在我得到了这个异常:java.lang.IllegalArgumentException: column '_id' does not exist
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 2014-03-29
相关资源
最近更新 更多