簡體   English   中英

如何獲取數據庫的整個列並將其轉換為String數組?

[英]How to take an entire column of a database and turn it into a String array?

我正在嘗試從數據庫中的表中提取整列並將所有條目存儲到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

任何幫助將不勝感激...

答案在這里

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()]);

您應該檢查c.getColumnIndex()的返回值。 它可能返回-1,因為該表中不存在給定的列(dbAdapter.KEY_BARCODE_PRODUCT),這可能是由於數據庫錯誤所致。

另外,Toast.LENGTH_SHORT在做什么? 您發布的代碼似乎缺少某些內容...

您可以在下面嘗試類似的方法:

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,可能存在語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM