我有一个函数,它根据来自多个表的数据填充一个类。我得到了第一个光标:
String query="SELECT * FROM SESSION where _id =" + mSessionID + ";";
Cursor c = dbAdapter.selectRecordsFromDB(query, null);
Session session=null;
c.moveToFirst(); 这很好用。然后再低一点,我这样做:
long galleryId = c.getInt(4);
long packageId = c.getInt(5);
long contractId = c.getInt(6);
String query2="SELECT * FROM PHOTOPACKAGES WHERE _id =" + packageId + ";";
Cursor p = dbAdapter.selectRecordsFromDB(query2, null);并且p游标的计数总是返回-1。我可以直接进入adb中的sqlite,运行同样的查询,其中packageId =1,它可以工作,我不确定为什么这不能工作,我没有看到任何其他的errors...can,你只是没有在同一个数据库上使用两个游标吗?附注:selectRecordsFromDB是一个帮助器函数:
public Cursor selectRecordsFromDB(String query, String[] selectionArgs) {
Cursor c = myDataBase.rawQuery(query, selectionArgs);
return myDataBase.rawQuery(query, selectionArgs);
}发布于 2011-07-15 05:25:20
回答你的实际问题:是的,你可以用多个游标来定位同一个数据库。我相信你的代码还有其他问题。同样,正如Philip指出的,创建游标是非常昂贵的,您不会仅仅因为创建额外的游标而想要创建额外的游标,并且在使用完游标时总是关闭它们。
发布于 2011-07-15 05:17:44
您的selectRecordsFromDB函数看起来非常奇怪,但它可能会在某种程度上正常工作,因为您创建的第一个光标会立即失去焦点。但是,像这样泄漏打开的游标并不是一个好主意。
https://stackoverflow.com/questions/6699980
复制相似问题