2016-11-02 10 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をご覧ください。最初の答えと2番目の答えの両方を試してみてください。 –

+0

私は両方を試しましたが、まだ同じ例外が発生しています – Fuluza

+0

あなたの変数 'res'はあなたが期待する値と内容を持っていると確信していますか? – BlackHatSamurai

答えて

1

SQL("select * from Todo")が渡すパラメータの数と一致しません(new String[]{COLUMN_ID})。引数をdb.rawQueryに渡す場合は、実行しているSQLにプレースホルダが必要です。例えば、のようなもの:クエリ(COLUMN_ID)にパラメータで渡しているので、

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

あなたが取得しているエラーがあるが、ないパラメータ(疑問符)の値をバインドするためにはありません。

+0

ちょっと@Metroids私はそれをして、今この例外が発生しています:java.lang.IllegalArgumentException: '_id'列が存在しません – Fuluza

関連する問題