0

以下のコードを使用して、指定された ID に対応するタイトルを取得しようとしています

public String get_Title(int id){
        Cursor c = db.query(true, DATABASE_TABLE, new String[] {
                APP_TITLE,
                },
                KEY_ROWID + "="  + id,
                null,
                null,
                null,
                null,
                null);

                String Final = c.getString(0);

                return Final;

        }

範囲外のインデックスが原因で例外が発生し続けます。私はカーソルが苦手なので、誰かがここで私を助けてくれたら. :S

4

1 に答える 1

0

orをString Final = c.getString(0)呼び出す前に、それが機能する必要があります。は暗黙的に最初の行の前に配置されるため、最初に最初の行に移動してからデータを取得する必要があります。c.moveToFirst()c.moveToNext()CursorCursor

編集:


したがって、次のようになります。

if (c.getCount()) { // if there is some data
   c.moveToFirst();
   String Final = c.getString(0);
}
else {
   Toast.makeText(YourActivityName.this, "No data found", Toast.LENGTH_SHORT).show();
}

Cursorそれで、あなたは紹介がほとんどない仕事が苦手だと書いていました。

ステートメントを実行すると、常に Cursor クラスのインスタンスが返されます。これはデータベース カーソルのバージョンであり、多くのデータベース システムで使用されています。

Class Cursor have following few basic methods:
  • getCount() - 実際のカーソルにある行数を取得する
  • moveToFirst()、moveToNext() など - 行間の移動用
  • getColumnNames() - 列の名前を取得する
  • getColumnIndex() - 指定された列名のゼロから始まるインデックスを取得するには...
  • getString()、getInt() など - 要求された列のインデックスのデータを取得する
  • requery() - もう一度カーソルを実行します
  • close() - カーソルのリソースを解放します。
  • そして次...

ここにあるカーソルの操作の詳細

よろしく

于 2012-05-27T15:20:29.810 に答える