Sqlite pendingOperation в подготовке отчета - PullRequest
3 голосов
/ 30 марта 2012

Мой код:

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

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

Моя проблема в том, что я получаю сообщение об ошибке "Sqlite pendingOperation" в mstatement.prepare () ;.Я использую синхронизированные блоки в каждом методе обработки базы данных.Это происходит во время работы нескольких потоков.

1 Ответ

2 голосов
/ 20 апреля 2012

Я получил свой ответ сам.

Я изменил весь метод следующим образом (жирным шрифтом):

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;

Великий Анкит Рокс ..

...