将第二个光标指向android上sqlite中的同一个数据库,这是否?

将第二个光标指向android上sqlite中的同一个数据库,这是否?,android,sqlite,Android,Sqlite,我有一个函数,它根据几个表中的数据填充一个类。我得到了第一个光标: String query="SELECT * FROM SESSION where _id =" + mSessionID + ";"; Cursor c = dbAdapter.selectRecordsFromDB(query, null); Session session=null; c.moveToFirst(); 这很有效。然后再低一点,我这样做: long galleryId = c.get

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

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的地方运行相同的查询,效果很好…所以我不确定为什么这不起作用,我没有看到任何其他错误…您能不能在同一个数据库上不使用两个游标?p、 s.selectRecordsFromDB是一个辅助函数:

    public Cursor selectRecordsFromDB(String query, String[] selectionArgs) {

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

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

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

回答您的实际问题:是的,您可以使用多个游标将同一个DB作为目标。我相信你的代码还有其他问题。
正如Philip所指出的,创建游标的成本非常高,您不想仅仅因为创建游标而额外创建游标,并且在使用完游标后总是将其关闭。

回答您的实际问题:是的,您可以使用多个游标将同一个DB作为目标。我相信你的代码还有其他问题。
同样正如Philip所指出的,创建游标的成本非常高,您不想仅仅因为创建游标而额外创建游标,并且在完成游标后总是将其关闭。

是否有任何与DB相关的内容出现在您给出的内容之外(可能过早地将其称为关闭DB)?是否有任何与DB相关的内容出现在您给出的内容之外(可能是过早地呼叫数据库附近的数据库)?谢谢。我不会关闭我的游标,因为在我的列表视图中,当我关闭时,我遇到了一个问题。列表会消失,所以我只是认为它们必须这样工作。我会说,我知道我未来的重写是我在安卓上第一次尝试数据库等。实际上,重读这篇文章,不泄漏游标的正确方法是什么?我必须保留吗如果我使用的是SimpleCursorAdapter,请将光标移动到周围?谢谢。我不会关闭光标,因为在我的列表视图中,我关闭光标时遇到了问题。列表会消失,所以我只是认为它们必须以这种方式工作。我会说,我知道我未来的重写是我在android上尝试数据库等的第一次尝试。实际上,重新阅读这篇文章,p是什么不泄漏游标的正确方法?如果我使用SimpleCursorAdapter,我是否必须保留游标?关闭游标Adapter指向的游标时,我总是遇到问题。我是否遗漏了一些内容?还有上面的问题,我实际上对其进行了轻微的重新编码并进行了内部连接,现在似乎解决了我的问题,仍然我不知道是什么原因导致第二个游标不工作…我总是在关闭游标适配器指向的游标时遇到问题。我是否遗漏了什么?还有上面的问题,我实际上稍微重新编码了一下,并进行了内部连接,现在似乎解决了我的问题,仍然不确定是什么原因导致第二个游标不工作国王。。。