0

次のコードを使用して、DBから特定のエントリを1つ取得しようとしています。

Object specificObject = myDbHelper.getObject(int id, int level);

// code in DataBaseHelper:

public Object getObject(int id, int level){

        c = myDataBase.rawQuery("SELECT * FROM QUESTIONS WHERE ID =" + id + " AND LEVEL = " + level, null);

        Object q = new Object();
        q.setQuestion(c.getString(1));
        q.setName(c.getString(2));
        q.setFile(c.getInt(3));
        q.setAnswer(c.getString(4));
        return q;


    }

問題は、次のエラーが発生することです。

09-24 11:12:52.299:E / AndroidRuntime(7388):原因:android.database.CursorIndexOutOfBoundsException:インデックス-1が要求され、サイズは1

何か案は?サイズが1(1エントリ?)であることはわかっているようですが、インデックス-1の要求された問題が発生しません...

4

2 に答える 2

3

カーソルからデータにアクセスする前に、最初のレコードを移動する必要があります。

c.moveToFirst()
于 2012-09-24T09:27:59.493 に答える
1

あなたはそれを次のようにすべきです:

c = myDataBase.rawQuery("SELECT * FROM QUESTIONS WHERE ID =" + id + " AND LEVEL = " + level, null);

    if(c.moveToFirst()) {
      Object q = new Object();
      q.setQuestion(c.getString(1));
      q.setName(c.getString(2));
      q.setFile(c.getInt(3));
      q.setAnswer(c.getString(4));
      return q;
    }
return null;
于 2012-09-24T09:29:33.190 に答える