#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)