2014-09-19 37 views
0

我正在從數據庫中獲取數據,之後在此過程中將其分配給數組,我總是隻將所有數組的長度設置爲1。如何將光標數據放入數組?

方法:

public void fetchData() { 

    database.open(); 
    Cursor cursor = database.getAllData(); 
    cursor.moveToFirst(); 

    while (!(cursor.isAfterLast())) { 
     nameArr = new String[] { cursor.getString(1) }; // i tried to put cursor data in arr from here 
     addressArr = new String[] { cursor.getString(2) }; 
     contactArr = new String[]{ cursor.getString(3) }; 
     cursor.moveToNext(); 
    } 

    database.close(); 
    Log.d("ArrayLength", Integer.toString(nameArr.length));//The arraylength is 1 i dont know why?? 

} 
+0

您正在創建一個新的String數組,每次只有一個元素通過循環。 – 2014-09-19 04:16:48

回答

2

使用Cursor.getCount()外while循環來初始化所有的數組爲:

int count=cursor.getCount(); 
nameArr=new String[count]; 
addressArr=new String[count]; 
contactArr=new String[count]; 
int index_count=0; 
while(!(cursor.isAfterLast())){ 
    nameArr[index_count]=cursor.getString(1); 
    addressArr[index_count]=cursor.getString(2); 
    contactArr[index_count]=cursor.getString(3); 
    index_count++; 
    cursor.moveToNext(); 
} 

爲了避免使用index_count使用的ArrayList從光標存儲所有數據/

+0

謝謝你的作品:) – user2273146 2014-09-19 04:30:13

0

這是一個非常簡單的例子...

Cursor client = db.rawQuery(sql, null); 

    String[][] clients = new String[2][client.getCount()]; 
    if(client.moveToFirst()){ 
     do{ 
      clients[0][i] = client.getString(client.getColumnIndex(CLIENT_NAME)); 
      clients[1][i++] = String.valueOf(client.getInt(client.getColumnIndex(CLIENT_ID))); 
     }while (client.moveToNext()); 
    } 
    client.close();