首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将第二个游标指向android上sqlite中的同一数据库,这是不是不行?

将第二个游标指向android上sqlite中的同一数据库,这是不是不行?
EN

Stack Overflow用户
提问于 2011-07-15 05:11:17
回答 2查看 1.7K关注 0票数 0

我有一个函数,它根据来自多个表的数据填充一个类。我得到了第一个光标:

代码语言:javascript
复制
String query="SELECT * FROM SESSION where _id =" + mSessionID + ";";
Cursor c = dbAdapter.selectRecordsFromDB(query, null);
Session session=null;
c.moveToFirst();            

这很好用。然后再低一点,我这样做:

代码语言:javascript
复制
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是一个帮助器函数:

代码语言:javascript
复制
    public Cursor selectRecordsFromDB(String query, String[] selectionArgs) {

    Cursor c = myDataBase.rawQuery(query, selectionArgs);
    return myDataBase.rawQuery(query, selectionArgs);       
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-15 05:25:20

回答你的实际问题:是的,你可以用多个游标来定位同一个数据库。我相信你的代码还有其他问题。同样,正如Philip指出的,创建游标是非常昂贵的,您不会仅仅因为创建额外的游标而想要创建额外的游标,并且在使用完游标时总是关闭它们。

票数 2
EN

Stack Overflow用户

发布于 2011-07-15 05:17:44

您的selectRecordsFromDB函数看起来非常奇怪,但它可能会在某种程度上正常工作,因为您创建的第一个光标会立即失去焦点。但是,像这样泄漏打开的游标并不是一个好主意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6699980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档