2014-09-19 3 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

루프를 통해 매번 요소가 하나만있는 새 문자열 배열을 만듭니다. –

답변

2

루프가 모든 배열 초기화 외부 동안 사용 Cursor.getCount() :

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

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(); 
관련 문제