2012-03-15 2 views
0

Когда я запускаю приложение Blackberry, выполняется вызов веб-службы. Когда возвращается ответ веб-службы, я затем сохраняю эти данные в базе данных SQLite.Как обработать ошибку файловой системы DatabaseIOException (12)

Я уверен, что в SQLite-файл может быть только одно соединение, но это создает для меня проблему.

Мое приложение работает в фоновом режиме, когда пользователь выходит. Если он запускает (который вызывает веб-службы и метод базы данных), выходит, а затем запускает снова, я получаю ошибку:

DatabaseIOException File System Error (12) 

Теперь я могу догадаться, что это происходит потому, что оба вызова веб-службы пытаются взаимодействовать с тот же файл базы данных. На самом деле все взаимодействия в моем приложении связаны с этим одним файлом базы данных.

Я думаю, один из моих вопросов будет:

Если два соединения с файлом базы данных создаются один за другим, и выдается ошибка, сделать оба соединения просто умереть или же закончить первое соединение, что это было делать ??

Также, что является лучшим способом справиться с этим типом сценария. Какие проверки следует выполнять перед открытием другого соединения?

Большое спасибо.

ответ

1

Здесь может быть две вещи, которые ваша система не проснулась должным образом и до этого выполняется ваш код базы данных. Таким образом, очевидно, что вы получите это исключение, и, во-вторых, может быть, вы не закрываете базу данных должным образом. Вы можете использовать finally block, чтобы закрыть свою базу данных.

+0

Спасибо. База данных закрывается отлично, но поскольку данные, которые я извлекаю, довольно велики, я думаю, что это скорее проблема синхронизации. Я думаю, что происходит, я пытаюсь открыть соединение с этой базой данных, когда он все еще занят обработкой чего-то другого. Если это исключение выбрасывается, что происходит с соединениями? Они оба убиты или были первыми, а второй убит? – PaulG