Delphi — Как создать строку подключения к .mdb, которая изменяет местоположение каталога

#delphi

#delphi

Вопрос:

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

бла-бла OneDrive PAT (папка, содержащая все файлы из программы, включая .mdb)

внутри этого каталога, который не изменяется, изменяется окончательное имя папки. Например.:

бла-бла OneDrive PAT V1

бла-бла OneDrive PAT V2

бла-бла OneDrive PAT V3 и так далее…

Моя проблема в том, что я использую .mdb и каждый раз, когда я копирую файлы в новую структуру папок, я должен пойти и создать новую строку подключения для подключения к моей базе данных. Я использую простое соединение ADO.

Любая помощь будет оценена, заранее спасибо!

Комментарии:

1. используйте git для контроля версий исходного кода.

2. Итак, с помощью Git смогу ли я сохранить всю мою версию в аналогичной структуре папок, и это решило бы проблему со строкой подключения? Потому что, насколько я знаю, Git просто вызовет ту же проблему, когда мои папки хранятся в OneDrive.

3. Вы правы в отношении Git. Его использование не решит проблему.

4. Это зависит от того, как вы будете использовать систему управления версиями (Git или любую другую) — при таком управлении версиями вам не нужно называть разные папки для каждой вашей версии.

5. Почему бы просто не поместить .mdb в папку PAT и использовать относительный путь в строке подключения, например ..mydb.mdb ? (.. означает одну папку выше текущей папки)

Ответ №1:

Строка подключения — это просто строка, поэтому вы можете манипулировать ею в коде так же, как и любой другой строкой. Выражение ExtractFilePath(Application.ExeName) возвращает путь к местоположению вашего Exe-файла, поэтому все, что вам нужно, это установить для него компонент path имени файла Mdb.

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

 const
  scConnectionString = 'blahblahetc%pathtomdb%mymdb.mdbblahetc';
  

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

 var
  APath : String;
[...]
  APath := ExtractFilePath(Application.ExeName);
  AdoConnection1.ConnectionString := StringReplace(scConnectionString, '%pathtomdb%', APath, []);
  

Ответ №2:

Строка подключения ADO может быть сохранена в файле UDL, который на самом деле является простым ini-файлом. Затем вам нужно изменить строку подключения в файле UDL, а не в вашем исходном коде. Конфигурация универсального канала передачи данных (UDL)