Сброс или обновление подключения к базе данных - PullRequest
1 голос
/ 13 июня 2010

Это приложение для Android в Google использует следующий метод для обновления базы данных после замены файла базы данных резервной копией:

public void resetDbConnection() { 
    this.cleanup(); 
    this.db = 
        SQLiteDatabase.openDatabase(
           "/data/data/com.totsp.bookworm/databases/bookworm.db",
            null, SQLiteDatabase.OPEN_READWRITE); 
} 

Я не создал это приложение, и яне уверен, что происходит.Я пытаюсь заставить эту идею работать в моем собственном приложении, но данные, кажется, кэшируются представлениями, и приложение продолжает показывать данные из базы данных, которая была заменена, даже после того, как я вызываю cleanup () и повторно открываю базу данных.Я должен прекратить и перезапустить активность, чтобы увидеть новые данные.

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

В итоге я перезапустил упражнение программно, и это работает, но это, похоже, решительная мера.Есть ли лучший способ?

1 Ответ

1 голос
/ 13 июня 2010

Согласен с Pentium10, по крайней мере, концептуально.

Приложение использует Cursor для отображения своих данных. Cursor в Android сродни клиентскому курсору в ODBC в том смысле, что это кэшированная копия всех данных, представленных в наборе результатов запроса.

Теперь обычным способом обработки изменений в содержимом базы данных является вызов requery() для Cursor. Это будет волновать его изменения через CursorAdapter к прикрепленному ListViews или другому AdapterViews.

В вашем случае я не совсем уверен, что это сработает, поскольку вы закрываете, заменяете и снова открываете базу данных. Это не должно быть сделано с открытым Cursor на данных, AFAIK. Итак, в вашем случае вам нужно закрыть Cursor, выполнить перемешивание базы данных, а затем снова выполнить запрос, чтобы получить новый Cursor для вашей новой базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...