bar*_*rry 5 database sqlite android database-cursor
我想知道是否有人可以给我一个Android游标的简要概述.几个具体问题:
1 - 我有一个在数据库查询后返回游标的方法:
public static Cursor getVehicles()
{
SQLiteDatabase db = vehicleData.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, GET_VEHICLES_FROM_CLAUSE, null, null, null, null, ORDER_BY);
return cursor;
}
Run Code Online (Sandbox Code Playgroud)
为了做家务,我在return语句之前尝试了db.close().但是,这会导致返回的游标不包含任何行.为什么是这样?
2 - 关闭游标和关闭数据库有什么区别?
3 - 如果它是一个局部变量,我是否需要在Cursor上调用close,还是可以将它留给垃圾收集器进行清理?
4 - 我的数据库很小,仅供我的应用程序使用 - 我可以保持打开状态吗?
小智 9
1)光标只是指向查询返回的数据的指针,它不包含查询中的所有数据.这是为了提高性能/效率(不会立即读取大型结果集 - >使用较少的内存).因此,如果关闭数据库,则光标无法检索数据 - >它是空的.
2)当您关闭游标时,将释放所有相关资源 - >您无法访问与此游标关联的数据(因为它已被释放),但您可以使用此游标或其他游标进行新查询.当您关闭数据库时,您不能再查询它(直到您重新打开它).
3)始终关闭游标.否则您将遇到问题 - 如果光标未关闭且新查询被阻止,GC将会抱怨.
4)如果你的应用程序完成后关闭它,是的.
归档时间: |
|
查看次数: |
2839 次 |
最近记录: |