|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Интеграция БД в приложение
Всем привет!
Вопрос по интеграции БД в различные приложения. Пока некий программный продукт (далее ПП) с БД существует в виде проекта (т.е. в виде Delphi project file) всё просто и замечательно работает, один раз подключился к БД и при последующих запусках, файл БД компилятор находит автоматически. Но стоит скомпилировать и собрать проект с БД в готовый программный продукт и инсталлировать его на другую машину, появляются ошибки с подключением к БД (если этот момент не продуман должным образом). Вопрос такой. Кто как реализует процедуру подключения БД в своих приложениях ? Пока у меня сделано через кнопку <Подключить БД>, т.е. при каждом запуске нужно указать путь к файлу - очень не элегантное решение ... Сейчас пытаюсь сделать так чтобы путь к файлу указывать хотя бы один раз, сохранить инфу о местонахождении файла БД в txt файл и при каждом запуске извлекать её из файла, но похоже это то же тупиковый путь ... Инсталляционный файл делаю через "Inno Setup". Элегантным решением было-бы создание файла с путями на этапе инсталляции когда уже известна директория куда будет установлен ПП, но я не знаю как это сделать в "Inno Setup", если у кого есть готовый скрипт поделитесь. В общем хотелось бы подискутировать на эти темы и обсудить выше изложенные проблемы и пути их решения. Как завещал товарищ Ленин: УЧИТЬСЯ! УЧИТСЯ! И ЕЩЁ РАЗ УЧИЦЦА! |
#2
|
||||
|
||||
Решений куча. Начиная от каталога из которого стартовало приложение, заканчивая поиском серверов. Тут столько всего напридумано - только выбирай.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 01.06.2015 в 23:24. |
#3
|
||||
|
||||
Цитата:
Вы мне только ссылочку на эту кучу дайте, я дальше сам разберусь - что это за куча ... Что бы по существу ... "Я эту самую истину выкапываю, а в это время с ней что-то такое делается, что выкапывал-то я истину, а выкопал кучу, извините... не скажу чего." [Сталкер] Как завещал товарищ Ленин: УЧИТЬСЯ! УЧИТСЯ! И ЕЩЁ РАЗ УЧИЦЦА! |
#4
|
||||
|
||||
Ну вот вам для начала, по пути запуска приложения:
Код:
procedure TfrmJournal.FormActivate(Sender: TObject); Const AdoConnection = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Engine Type=5'; begin try AppDB.ConnectionString := Format(AdoConnection, [Copy(Application.ExeName,1,Length(Application.ExeName)-3)+'mdb']); AppDB.Open; except ShowMessage('Не удалось подключится к БД. Программа будет прервана.'); Application.Terminate; end; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Homo-Fantasmus (03.06.2015)
|
#5
|
|||
|
|||
Вот пример записи в реестр пути, куда поставились:
Код:
[Registry] Root: HKCU; Subkey: Software\Mycompany\MyProduct\DB; ValueType: expandsz; ValueData: {app}\database.mdb uninsdeletekey И поставь себе ISTools, там можно аккуратно это в нормальном интерфейсе все насетапить. |
#6
|
||||
|
||||
Код:
procedure TForm1.FormActivate(Sender: TObject); var AppDB:Variant; Const AdoConnection = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Engine Type=5'; begin try AppDB.ConnectionString := Format(AdoConnection, [Copy(Application.ExeName,1,Length(Application.ExeName)-3)+'mdb']); AppDB.Open; except ShowMessage('Не удалось подключится к БД. Программа будет прервана.'); //Application.Terminate; end; end; Спасибо Как завещал товарищ Ленин: УЧИТЬСЯ! УЧИТСЯ! И ЕЩЁ РАЗ УЧИЦЦА! |