2016-11-02 1 views
1

Как исправить эту ошибку? Я использую SQLite для хранения своих данных, и у меня есть CursorAdapter.java и DBHelper класс, и я стараюсь использовать все на MainActivity, вот код для MainActivity.javaНевозможно связать аргумент с индексом 1, потому что индекс выходит за пределы диапазона. Оператор имеет 0 параметров

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); 

Но я получаю ошибка, упомянутая выше, что это значит? Пожалуйста, помогите

+0

Посмотрите на это: http://stackoverflow.com/questions/2810615/how-to-retrieve-data-from-cursor-class. Попробуйте как первый, так и второй ответ. –

+0

Я пробовал и то и другое, im все равно получал то же исключение – Fuluza

+0

Вы уверены, что ваша переменная 'res' имеет значение и содержание, которое вы ожидаете? – BlackHatSamurai

ответ

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), но нет никаких параметров (вопросительных знаков), чтобы связать значение.

+0

Привет @Metroids Я сделал это и теперь получаю это исключение: java.lang.IllegalArgumentException: column '_id' не существует – Fuluza

Смежные вопросы

 Смежные вопросы