2011-07-14 53 views
0

我有這個功能是根據幾個表中的數據填寫一個類。我得到第一個光標:將第二個光標指向android中的sqlite中的同一個數據庫,這是不是一個不?

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,它的工作原理很好...所以不知道爲什麼這不起作用,我沒有看到任何其他錯誤...你可以不在同一個數據庫上使用兩個遊標?附: selectRecordsFromDB是一個輔助功能:

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

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

是否有任何與數據庫相關的事情發生在您在此處提供的內容(可能過早地調用了與數據庫的關係)? – Pyrodante

回答

2

要回答您的實際問題:是的,您可以使用多個遊標定位相同的數據庫。我相信你的代碼還有其他問題。 也正如菲利普指出的那樣,創建遊標非常昂貴,你不想僅僅因爲使用額外功能,並且在完成遊戲時總是關閉它們。

+0

+1堅持要求開始 – 2011-07-14 21:33:36

+0

我總是遇到問題,關閉我的cursoradapters指向的遊標。我在這裏錯過了什麼嗎?還有上面的問題,我實際上已經重新編碼它,做了一個內部連接,它似乎現在解決了我的問題,仍然不確定是什麼導致第二個光標不工作... – Codejoy

1

你selectRecordsFromDB功能看起來很怪異該死,但它會在時尚以後可能工作,因爲您創建的第一光標不清晰的直線距離。雖然泄露這樣的遊標並不是一個好主意。

+0

謝謝。我在列表視圖中沒有關閉我的遊標因爲我遇到問題,我遇到了一個問題......列表將會消失,所以我只是認爲他們必須以這種方式工作。我會說我知道在我未來的重寫是我第一次刺穿android上的數據庫等。 – Codejoy

+0

實際上重新讀這,什麼是不泄漏遊標的正確方法?如果我正在使用SimpleCursorAdapter,是否必須保留遊標? – Codejoy

相關問題