簡體   English   中英

將第二個 cursor 指向 android 上 sqlite 中的同一數據庫,這是不?

[英]Pointing second cursor to same database in sqlite on android, this a no no?

我有這個 function,它根據幾個表中的數據填寫 class。 我得到了第一個 cursor:

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 cursor 總是返回 -1 作為其計數。 我可以將 go 直接插入 adb 中的 sqlite 並在 packageId = 1 的地方運行相同的查詢,它工作得很好......所以不知道為什么這不起作用,我沒有看到任何其他錯誤......你能不能在同一個數據庫上使用兩個游標? ps selectRecordsFromDB 是一個助手 function:

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

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

要回答您的實際問題:是的,您可以使用多個游標定位同一個數據庫。 我相信您的代碼還有其他問題。 同樣正如菲利普指出的那樣,創建游標的成本非常高,您不想僅僅因為它們而制作額外的東西,並且在完成它們時總是關閉它們。

您的 selectRecordsFromDB function 看起來很奇怪,但它可能會在一段時間后起作用,因為您創建的第一個 cursor 會立即失去焦點。 不過,像這樣泄漏打開的游標並不是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM