2014-09-19 41 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();