如何将光标数据放入数组?

时间:2014-09-19 04:11:34

标签: java android

我从数据库中获取数据,然后在此过程中将数据分配给数组,我总是将所有数组的长度设置为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??

}

2 个答案:

答案 0 :(得分:2)

在while循环外使用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存储来自cursor /

的所有数据

答案 1 :(得分: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();