Доступ к базе данных Sqlite одновременно - PullRequest
0 голосов
/ 04 октября 2018

Я использую Visual C ++ для написания небольшого приложения, которое будет вызывать интерфейс SQLite C, чтобы создать базу данных и вставить в нее некоторые данные.

При отладке приложения я хочу проверить данные в базе данных.Поэтому я запускаю оболочку sqlite3 (sqlite3.exe) из командной строки, а затем использую следующую команду для открытия базы данных:

.open имя файла

После этого я хочу проверить таблицу, созданнуюмое приложение, но всегда получаю ошибку «таблица не существует».

Затем я использую «select * from sqlite_master;», но все равно возвращаю пустой результат.

Я делаю больше тестов, как показано ниже:

  1. Попробуйте снова открыть базу данных с параметром --readonly, как показано ниже:

.open --readonly FileName;

После открытия базы данных я пытаюсь использовать следующую команду:

select * from sqlite_master;

Затем я увижу ошибку «база данных заблокирована».Я пытаюсь найти решения в Stackoverflow, и все решения просто предлагают закрыть другое приложение, которое обращается к базе данных.Однако мне нужно лишь позволить приложению по-прежнему получать доступ к базе данных, в то время как я все еще могу просматривать (не изменять) содержимое базы данных sqlite, это возможно?

Поэтому мне просто интересно, могу ли я получить доступбазу данных sqlite, которая уже была открыта другой программой одновременно через оболочку sqlite3.exe?В настоящее время только мое приложение будет записывать в базу данных, а оболочке sqlite3 нужно только прочитать данные в базе данных.

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Если sqlite_master пусто, возможно, вы открыли не тот файл с помощью инструмента CLI, или приложение для записи могло не выполнить транзакцию, которая создала таблицы, которые вы ищете.

Если вы хотитеодин пишущий и один читающий процесс, возможно, было бы неплохо проверить https://www.sqlite.org/wal.html, чтобы убедиться, что вы правильно открыли базу данных в обоих процессах.

Если это только для отладки, возможно, используйте https://www.sqlite.org/backup.html Резервное копирование API также может быть решением.Это позволяет вам выгружать базу данных в отдельный файл, что позволяет игнорировать проблемы параллелизма при чтении.

0 голосов
/ 04 октября 2018

Привет, вы можете использовать «DB Browser for SQlite».С помощью этого инструмента вы можете легко создать свою базу данных sqlite и вставить строки.Также вы можете просмотреть вставленные данные.

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