Не удается обновить базу данных iphone sqlite3 - PullRequest
1 голос
/ 22 августа 2009

Я создал базу данных sqlite3 из командной строки и вставил несколько записей. Мое приложение извлекает их все и показывает их нормально. Затем я возвращаюсь и вставляю еще несколько записей через sqlite3 cli, удаляю файл db из каталога документов симулятора, чтобы он был скопирован из основного комплекта, и снова запускаю приложение, чтобы обнаружить, что оно отображает оригинальные записи я вставил. Новые записи не показывают. Я проверил, что новый файл базы данных был скопирован в каталог документов симуляторов, и когда я указываю на него sqlite3 cli, я могу сделать выбор * и просмотреть все записи.

Что здесь может происходить? Похоже, что предыдущая версия файла базы данных где-то кешируется и используется вместо моей обновленной версии.

// Скотт

Ответы [ 2 ]

2 голосов
/ 22 августа 2009

каждый раз, когда вы перестраиваете и запускаете приложение в xcode, оно создает новую папку в папке приложений симулятора iphone. Если ваша база данных sqlite включена из xcode, старая база данных может быть помещена в новую папку, в то время как та, которую вы редактируете, находится в старой и теперь не используемой папке.

0 голосов
/ 22 августа 2009

Я не подтвердил его ответ, но Стефан Бурло сказал :

Sqlite использует кеш для запросов. Время от времени закрывайте и снова открывайте базу данных, чтобы освободить кеш-память.

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

Очевидно, что вы не беспокоитесь о памяти, но если она кеширует запросы, возможно, вам нужно просто закрыть и открыть заново.

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

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