Где утверждение, используя неправильные значения - PullRequest
0 голосов
/ 05 марта 2011

Приветствую всех. Я пытаюсь перебрать ряд значений, чтобы заполнить представление списка из базы данных. Насколько я могу сказать, код должен работать. По какой-то причине оператор выбора использует другое значение вместо того, что я ему говорю.

Это в моем адаптере, я должен иметь возможность ввести "1" (save_slot) и "91" (элемент), чтобы получить значение 1 и значение 2.

 public Cursor fetchItem(String saveslot, String item) throws SQLException {

        Cursor mCursor =

            mDb.query(true, DATABASE_PUSHERS_TABLE, new String[] {KEY_PROWID,
                     SAVE_SLOT,ITEM,VALUE1,VALUE2}
            ,SAVE_SLOT + " = " + saveslot + " AND "+ITEM + " = " + item, null,
                    null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;

        }   

По какой-то причине при выполнении выбранного выбора он использует соответствующее значение 1 вместо элемента. Таким образом, он ищет слот save_slot "1", но вместо поиска элемента "91" он ищет значение value1 "91", которое равно "EMPTY SLOT". Поэтому он ищет saveslot = 1 и item = EMPTY SLOT, которого не существует.

LogCat:

DEBUG/ITEM CHECK: SAVESLOT #: 0
DEBUG/ITEM CHECK: ITEMSLOT #: 0
DEBUG/ITEM CHECK: ITEM #: 91
DEBUG/ITEM CHECK: ITEMSLOT #: 1
DEBUG/ITEM CHECK: ITEM #: 99
DEBUG/ITEM CHECK: ITEMSLOT #: 2
DEBUG/ITEM CHECK: ITEM #: 98
DEBUG/ITEM CHECK: ITEMSLOT #: 3
DEBUG/ITEM CHECK: ITEM #: 97
DEBUG/ITEM CHECK: ITEMSLOT #: 4
DEBUG/ITEM CHECK: ITEM #: 96
DEBUG/ITEM CHECK: ITEMSLOT #: 5
DEBUG/ITEM CHECK: ITEM #: 95
DEBUG/ITEM CHECK: ITEMSLOT #: 6
DEBUG/ITEM CHECK: ITEM #: 94
DEBUG/ITEM CHECK: ITEMSLOT #: 7
DEBUG/ITEM CHECK: ITEM #: 93
DEBUG/ITEM CHECK: ITEMSLOT #: 8
DEBUG/ITEM CHECK: ITEM #: 100
DEBUG/ITEM CHECK: ITEMSLOT #: 9
DEBUG/ITEM CHECK: ITEM #: 90
DEBUG/ITEM CHECK: SAVESLOT #: 1
DEBUG/ITEM CHECK: ITEMSLOT #: 0
                            @this should be item 91 NOT "EMPTY SLOT"
@DEBUG/ITEM CHECK: ITEM #: EMPTY SLOT
DEBUG/AndroidRuntime: Shutting down VM
WARN/dalvikvm(8300): threadid=3: thread exiting with uncaught exception (group=0x4001b390)
ERROR/AndroidRuntime(8300): Uncaught handler: thread main exiting due to uncaught exception
ERROR/AndroidRuntime(8300): java.lang.RuntimeException: Unable to resume activity   {circle.pusherb/circle.pusherb.SaveScreen}:     android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
ERROR/AndroidRuntime(8300): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
ERROR/AndroidRuntime(8300):     at circle.pusherb.SaveScreen.fillData(SaveScreen.java:77)

КОД:

  private void fillData() {
        Cursor note = null;
        String[] from = InfoItemList;
        int SaveSlot = 1;
        int x = 0;
        for (SaveSlot = 0;SaveSlot < 3;SaveSlot++ ){
          Log.d("ITEM CHECK: SAVESLOT #", Integer.toString(SaveSlot));
        for ( x = 0; x<(InfoItemList.length); x++){

            note = mDbHelper.fetchItem(Integer.toString(SaveSlot),InfoItemList[x]);
            startManagingCursor(note);
            Log.d("ITEM CHECK: ITEMSLOT #", Integer.toString(x));
            Log.d("ITEM CHECK: ITEM #", InfoItemList[x]);

       from[x] = note.getString(
                note.getColumnIndexOrThrow(pusherDbAdapter.VALUE1));

        }
        }


        int[] to = new int[]{R.id.text1, R.id.text2, R.id.text3,
                R.id.text5,R.id.text6,R.id.text7,R.id.text8,R.id.text9
                ,R.id.text10};


        SimpleCursorAdapter notes = 
            new SimpleCursorAdapter(this, R.layout.pusherlist_row, null, from, to);
        setListAdapter(notes);
    }

//InfoItemList[] contains numbers 90 to 100 except 92.
//EMPTY SLOT is currently the value returned when a record containing item 91 and save_slot 1-3.

1 Ответ

1 голос
/ 05 марта 2011

Попробуйте этот запрос:

mDb.query(true, DATABASE_PUSHERS_TABLE, new String[] {KEY_PROWID, SAVE_SLOT, 
           ITEM,VALUE1,VALUE2}, 
        SAVE_SLOT + " = ? AND "+ITEM + " = ?" ,
        new String[] {saveslot, item}, null, null, null, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...