2012-03-30 403 views
3

我的代碼是:sqlite的pendingOperation在聲明準備

Statement mstatement = null; 
URI uri = URI.create(DBPath); 
sqliteDb = DatabaseFactory.openOrCreate(uri); 

mStatement = sqliteDb.createStatement(strQuery); 
mStatement.prepare(); 

我的問題是,我得到的錯誤是 「sqlite的pendingOperation」 在mstatement.prepare();. 我正在每個數據庫處理方法使用同步塊。多線程運行時發生這種情況。

+0

您可以包括整個異常消息?此外,包括'strQuery'中出現的實際字符串將會很有幫助。 – 2012-03-31 19:09:54

+0

我的查詢是: SELECT EventId,OldTitle,OrderNumber,Status,Title,Type,UpdateDateTime,Id FROM WHERE EventId = 5 AND Type = 1 AND(狀態= 0或狀態= 1或狀態= 2)ORDER BY OrderNumber 錯誤是:SqlitependingOperation – AnkitRox 2012-04-02 09:32:21

+1

@AnkitRox:請在您的示例中添加更多代碼。這將包括設置'strQuery'等等。另外,正如Michal Donohue所說,請包含完整的錯誤信息,最好包含堆棧跟蹤。 – 2012-04-18 14:44:20

回答

2

我自己得到了我的答案。

我修改過的所有方法(粗體):

Cursor c = null; 
DBHelper.mStatement = null; 
Vector followups = new Vector(); 
**boolean runFlag = true;** 
synchronized (GlobalVariables.lockObject) { 
try { 
**while(runFlag)** 
SELECT EventId,OldTitle,OrderNumber,Status,Title,Type,UpdateDateTime,Id FROM Questions WHERE EventId=5 AND Type=1 AND (Status=0 OR Status=1 OR Status=2) ORDER BY OrderNumber 

       DBHelper.CreateAndOpenSqliteDBConnection(); 
DBHelper.mStatement = DBHelper.sqliteDb.createStatement(strQuery); 
DBHelper.mStatement.prepare(); 

**if(DBHelper.mStatement == null) 
    { 
     DBHelper.CloseSqliteDBConnection(); 
         runFlag = true; 
         continue; 
        } 
        else 
        { 
         runFlag = false; 
        }** 

c = DBHelper.mStatement.getCursor(); 

while (c.next()) { 
        followups.addElement(Followup.getFromCursor(c)); 
       } 
} 
**}** 
catch (Exception ex) { 
System.out.print(ERRORSTRING + "getUploadFollowupsFromDB: " 
         + ex); 
} finally { 

DBHelper.CloseSqliteDBConnection(); 
} 
GlobalVariables.lockObject.notifyAll(); 
} 
return followups; 

大ANKIT Rox的..

+0

'布爾runFlag'會更好地被聲明爲volatile(如果你感興趣的話,請檢查多線程Java教程)爲什麼是這樣? – gnat 2012-04-20 13:59:14

+0

但是需要什麼來使其變得不穩定。 – AnkitRox 2012-04-24 12:22:18

+0

以確保從其他線程對其進行的更新會產生效果 – gnat 2012-04-24 12:41:52