Можно ли читать с базы данных SQLite при записи на iPhone? - PullRequest
1 голос
/ 20 августа 2009

Можно ли читать из базы данных SQLite во время записи?

Я знаю, что доступ для записи заблокирован, когда он записывается, но то же самое для чтения?

Ответы [ 3 ]

1 голос
/ 24 августа 2009

После некоторого прочтения и просмотра кода FMDB я обнаружил, что неправильно использую возвращаемые значения SQLITE_BUSY и SQLITE_LOCKED.

Согласно коду FMDB, следует выполнить цикл для ограниченного числа повторных попыток, ожидая короткое время между.

Итак, я реализовал это в своем коде, и все, кажется, работает нормально.

1 голос
/ 20 августа 2009

Это немного запутанно, но посмотрите документацию по блокировке файлов и параллелизму для SQLite. Похоже, что если БД находится в режиме блокировки exclusive, то это единственный раз, когда чтение не допускается. Кроме того, разблокирована, когда БД даже не открыта.

Я не уверен на 100%, но это то, что я думаю , что это значит.

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

Да, хотя все соответствующие проблемы многопоточности необходимо учитывать. Обычно я открываю несколько дескрипторов одного и того же файла БД с помощью sqlite3_open_v2 ().

...