Как взять весь столбец базы данных и превратить его в массив строк? - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь взять весь столбец из таблицы в моей БД и сохранить все записи в массив String. Ниже у вас есть мой код:

    public Cursor fetchAllBarcodeEntries(){
    return db.query(BARCODE_TABLE, new String[] {KEY_BARCODE_ID, KEY_BARCODE_NUMBER, KEY_BARCODE_PRODUCT, KEY_BARCODE_PRODUCT_DESC}, null, null, null, null, null);
}

Я звоню и использую такую ​​функцию:

    Cursor c = dbAdapter.fetchAllBarcodeEntries();

    for(int i = 0; i < c.getCount(); i++){
        stringArray[i] = c.getString(c.getColumnIndex(dbAdapter.KEY_BARCODE_PRODUCT);
    }

Это часть журнала ошибок, который я получаю

01-26 23:15:02.434: E/AndroidRuntime(787): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

Любая помощь будет очень признателен ...

Ответы [ 3 ]

2 голосов
/ 27 января 2012

Ответ здесь

ArrayList<String> columnArray1 = new ArrayList<String>();
ArrayList<String> columnArray2 = new ArrayList<String>();
ArrayList<String> columnArray3 = new ArrayList<String>();
if(mCursor.moveToFirst()!=null){
  do{ 
    columnArray1.add(mCursor.getString(COLUM_INDEX1));
    columnArray2.add(mCursor.getString(COLUM_INDEX2));
    columnArray3.add(mCursor.getString(COLUM_INDEX3));
  } while (mCursor.moveToNext()!=null);
}

После этого вы можете преобразовать ArrayList в массив String:

String[] colStrArr1 = (String[]) columnArray1.toArray(new String[columnArray1.size()]);
1 голос
/ 27 января 2012

Вы можете попробовать что-то вроде этого ниже:

Cursor c = dbAdapter.fetchAllBarcodeEntries();

int columnCnt = c.getColumnCount ();

String[] stringArray = new String[columnCnt];
c.moveTofirst();



    for(int i = 0; i < columnCnt ; i++){

        stringArray[i] = c.getString(i);
}

Примечание: у меня нет IDE под рукой, могут быть синтаксические ошибки.

1 голос
/ 27 января 2012

Вы должны проверить возвращаемое значение c.getColumnIndex ().Вероятно, он возвращает -1, поскольку указанный столбец (dbAdapter.KEY_BARCODE_PRODUCT) не существует в этой таблице, возможно, из-за ошибки в вашей базе данных.

Кроме того, что там делает Toast.LENGTH_SHORT?Кажется, что-то отсутствует в коде, который вы разместили ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...