SQLite查询后如何处理游标?

3

这是我第一次使用数据库,我不太确定它是如何工作的。我创建了数据库,并制作了一个查询,返回一个光标……现在怎么办?什么是光标呢?我可以用它来浏览我的数据吗,还是必须将它放入ArrayList或ListActivity中?

6个回答

6

您需要迭代游标以获取结果。

使用 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!
}

这是查看数据库中特定记录数量的最佳方法吗? - NoBugs

2

首先调用 cursor.moveToFirst()。每次调用 cursor.moveToNext() 时,它会移动到下一行。确保在使用完游标后调用 cursor.deactivate(),否则将在日志记录中获得错误。


1

遍历返回的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;
    }

0
根据此链接,看起来您可以使用类似以下方式迭代查询返回结果:
cursor.next();

使用以下代码获取您要查找的位置的数据:

cursor.getString(0)

0

来自Developer.android:此接口提供对数据库查询返回的结果集的随机读写访问。

换句话说:查询会返回一个由光标表示的数据集。首先,您需要确保获得了有效的光标(非空),然后尝试将其移动到数据集中所需的位置(使用moveToXXX方法)。为了获取光标指向的数据,请使用getXXX方法。使用完毕后,请务必调用close以释放资源。


0

在成功设置了光标之后,通常您会希望以某种形式将其显示到视图中。

请查看以下答案,其中提供了一个详细但简单的示例,演示如何使用光标适配器将新创建的光标与所需的XML视图配对:

https://dev59.com/T2035IYBdhLWcg3wYO51#20532937


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接