2

データベースから値を選択したいのですが、エラーが発生しました

Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

私のコードのどこが間違っているのかわかりません.. これは dbHelper の私のコードです。

public Cursor pilihKontak( String nomor ) {
    Cursor c = dba.rawQuery("SELECT idkontak FROM TB_kontak where nomor = '"+nomor+"'", null);
    return c;
}

他のクラスで値を取得したい。私はこのコードを使用します。

Cursor cursorKontak = data.pilihKontak(nomor);
    idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("k_id"));

検索しましたが、エラーの解決策が得られませんでした。誰かが私を助けることができますか?私は本当に解決策が必要です、私を助けてください..ありがとう..よろしく..

4

3 に答える 3

4

カーソルを最初に移動する必要があり、「k_id」は「idkontak」である必要があります。

Cursor cursorKontak = data.pilihKontak(nomor);
if (cursorKontak.moveToFirst()) {
    idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("idkontak"));
}
于 2013-05-05T04:24:49.060 に答える
1

Cursor の公式ドキュメントには次のように書かれています。

関数:getColumnIndex(String columnName):

It returns the zero-based index for the given column name, or -1 if the column doesn't exist.

したがってIndex -1 requested、エラーが発生した場合は、列が存在しないことを意味します。したがって、@StinePikeが提案したように列を含めるか、すべての行を取得しようとする場合があります。

 Cursor c = dba.rawQuery("SELECT * FROM TB_kontak where nomor = '"+nomor+"'", null);

次に、正しい列名を使用します。

 Cursor cursorKontak = data.pilihKontak(nomor);
 idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("CORRECT_COLUMN_NAME"));

それが役立つことを願っています。

于 2013-05-05T04:24:21.633 に答える
0

使用する

Cursor c = dba.rawQuery("SELECT k_id FROM TB_kontak where nomor = '"+nomor+"'", null);
于 2013-05-05T04:19:15.453 に答える