这是我第一次使用数据库,我不太确定这是如何工作的。我做了数据库,并做了一个查询,返回一个游标和…现在怎么办呢?游标到底是什么?我可以用它来浏览我的数据还是我必须把它放在ArrayList或ListActivity中?
您需要迭代游标以获得结果。
使用cursor.moveToFirst()
和/或cursor.moveToNext()
(带while循环)。然后您可以使用getX()方法,如cursor.getInt()
或cursor.getString()
。
例如,如果您希望查询得到一个结果:
if (cursor.moveToFirst()) {
String name = cursor.getString(cursor.getColumnIndex('NAME'));
int age = cursor.getInt(cursor.getColumnIndex('AGE'));
} else {
// oops nothing found!
}
首先调用cursor.moveToFirst()。每次调用cursor.moveToNext()时,它都会移动到下一行。请确保在完成游标操作后调用cursor.deactivate(),否则日志记录中将出现错误。
遍历返回的Cursor实例
public List<Object[]> cursorToTableRows(Cursor cursor) {
List<Object[]> result = new ArrayList<Object[]>(cursor.getCount());
cursor.move(0);
cursor.moveToNext();
while (cursor.isAfterLast() == false) {
Object[] tableRow = new Object[cursor.getColumnCount()];
for(int i=0; i<cursor.getColumnNames().length; i++) {
int columnIndex = cursor.getColumnIndex(cursor.getColumnName(i));
String columnValue = cursor.getString(columnIndex);
tableRow[i] = columnValue;
}
result.add(tableRow);
cursor.moveToNext();
}
cursor.close();
return result;
}
然后创建所需的对象。
public List<Vehicle> getVehicles() {
List<Vehicle> vehicles = new ArrayList<Vehicle>();
Cursor cursor = null;
List<Object[]> objects = cursorToTableRows(cursor);
for(Object[] row : objects) {
int i=0;
Vehicle vehicle = new Vehicle(row[i++].toString(), row[i++].toString()));
vehicles.add(vehicle)
}
return vehicles;
}
from Developer。android:这个接口提供了对数据库查询返回的结果集的随机读写访问。
换句话说:query返回一组由游标表示的数据。首先,您需要确保获得一个有效的游标(非空),然后尝试将其移动到数据集中所需的位置(使用moveToXXX方法)。为了获得游标所指向的数据,使用getXXX方法。当完成使用时,确保调用close来释放资源。
根据这个链接,看起来您可以使用如下方式遍历查询返回:
cursor.next();
并在您正在寻找的位置使用:
获取数据cursor.getString(0)
在成功设置Cursor之后,您通常希望以某种形式将其显示到视图中。
请看下面的答案,这是一个使用游标适配器将新生成的游标与所需的XML视图配对的详细但简单的示例:
https://stackoverflow.com/a/20532937/293280