Topic: Переключение на резервный файл базы SQLite

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

Re: Переключение на резервный файл базы SQLite

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


Ниже приведу пример кода, который я использую для запуска программы с базой, указанной как параметр при запуске приложения. Модифицируйте её, добавив проверку существования (доступности) базы:


// автоматическая настройка на базу при запуске программы
// путь к базе передаётся как 1-й параметр
// если возвращает True, то нужно закрыть главную форму
function NeedRestart:boolean;
var
  iniFile:TIniFile;
begin
  result := false;
  // оказывается, при запуске программы из среды разработки добавляется параметр "/debug"
  if  (ParamStr(1)<>'/debug') and (ParamStr(1)<>'') and (ParamStr(1) <> BaseName) then
  begin
    if FileExists( ParamStr(1) ) then
    begin
      iniFile:=TIniFile.Create(ExtractFileDir(ParamStr(0))+'\settings.ini');
      iniFile.WriteString('Options','server',ParamStr(1));
      iniFile.free;
      // перезапуск
      OpenFile(ParamStr(0),'');
    end
    else
    begin
      ShowMessage('Неверный путь к базе: '+ParamStr(1));
    end;
    result := true;
  end;
end;
Визуальное программирование: блог и телеграм-канал.

Re: Переключение на резервный файл базы SQLite

Большое спасибо!)