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