Поделиться через


Ошибки базы данных

SqliteException вызывается при обнаружении ошибки SQLite. Сообщение предоставляется SQLite. Свойства SqliteErrorCode и SqliteExtendedErrorCode содержат код результата SQLite ошибки.

Ошибки могут возникать при каждом взаимодействии Microsoft.Data.SQLite со встроенной библиотекой SQLite. В следующем списке приведены распространенные сценарии, в которых могут возникать ошибки:

  • открытие соединения;
  • запуск транзакции;
  • выполнение команды;
  • Вызов NextResult.

Тщательно продумайте, как ваше приложение будет обрабатывать эти ошибки.

Блокировка, повторные попытки и время ожидания

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

Каждый раз, когда поставщик Microsoft.Data.SQLite обнаруживает ошибку занятости или блокировки, он автоматически выполняет повторные попытки до тех пор, пока команда не будет выполнена успешно или не будет достигнуто время ожидания команды.

Вы можете увеличить время ожидания команды, задав параметр CommandTimeout. По умолчанию время ожидания составляет 30 секунд. При указании значения 0 время ожидания не ограничено.

// Retry for 60 seconds while locked
command.CommandTimeout = 60;

Иногда поставщику Microsoft.Data.Sqlite необходимо создать неявный объект команды. Например, во время запуска транзакции (BeginTransaction). Чтобы задать время ожидания для этих команд, используйте DefaultTimeout.

// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;

См. также