1

私はすべての食品のデータベースを持っています。データベースで可変食品を検索し、そのカーソルを取得したいと考えています。例として、食品アイテム = オレンジを考えてみましょう。次の行は、ターミナルに入力したときに正しい結果を示します。

SELECT * from food WHERE item = 'Oranges'

それを実装するために、以下のように SQLiteOpenHelper を拡張するクラスで getOneItem というメソッドを作成しました。

public Cursor getOneItem(String itemName) {
    return myDataBase.query(TABLE, null, C_NAME+" = " +itemName , null, null, null, null);

}

しかし、メソッドが呼び出されると、「そのような列はありません: オレンジ、コンパイル中にエラーが発生します。

SELECT * from table WHERE item = Oranges

コンピューターが Oranges という列を検索し、列内で Oranges を検索しないのはなぜですか?

メソッドを次のように変更したとき:

public Cursor getOneItem(String itemName) {
    return myDataBase.query(TABLE, null, C_NAME+" = '" +itemName +"'", null, null, null, null);

}

CursorIndexOutOfBoundException、Index -1 がサイズ 1 で要求されました

4

1 に答える 1

3

2 番目の引数を null にすることはできません...表示する必要がある列を指定します..

   return  myDataBase.query( TABLE, new String[] {
                    C_NAME
                    }, 
                    C_NAME + "= ?" , 
                    new String[] { itemName }, ,         
                    null, 
                    null, 
                    null);
于 2013-01-14T09:58:36.877 に答える