Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.06.2015, 23:09
Аватар для Homo-Fantasmus
Homo-Fantasmus Homo-Fantasmus вне форума
Прохожий
 
Регистрация: 23.08.2011
Адрес: МО
Сообщения: 46
Версия Delphi: Delphi, Lazarus
Репутация: 10
По умолчанию Интеграция БД в приложение

Всем привет!
Вопрос по интеграции БД в различные приложения.

Пока некий программный продукт (далее ПП) с БД существует в виде проекта (т.е. в виде Delphi project file) всё просто и замечательно работает, один раз подключился к БД и при последующих запусках, файл БД компилятор находит автоматически. Но стоит скомпилировать и собрать проект с БД в готовый программный продукт и инсталлировать его на другую машину, появляются ошибки с подключением к БД (если этот момент не продуман должным образом).

Вопрос такой.
Кто как реализует процедуру подключения БД в своих приложениях ?

Пока у меня сделано через кнопку <Подключить БД>, т.е. при каждом запуске нужно указать путь к файлу - очень не элегантное решение ...
Сейчас пытаюсь сделать так чтобы путь к файлу указывать хотя бы один раз, сохранить инфу о местонахождении файла БД в txt файл и при каждом запуске извлекать её из файла, но похоже это то же тупиковый путь ...
Инсталляционный файл делаю через "Inno Setup".
Элегантным решением было-бы создание файла с путями на этапе инсталляции когда уже известна директория куда будет установлен ПП, но я не знаю как это сделать в "Inno Setup", если у кого есть готовый скрипт поделитесь.

В общем хотелось бы подискутировать на эти темы и обсудить выше изложенные проблемы и пути их решения.
__________________
Как завещал товарищ Ленин: УЧИТЬСЯ! УЧИТСЯ! И ЕЩЁ РАЗ УЧИЦЦА!
Ответить с цитированием
  #2  
Старый 01.06.2015, 23:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

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

Последний раз редактировалось Страдалецъ, 01.06.2015 в 23:24.
Ответить с цитированием
  #3  
Старый 01.06.2015, 23:38
Аватар для Homo-Fantasmus
Homo-Fantasmus Homo-Fantasmus вне форума
Прохожий
 
Регистрация: 23.08.2011
Адрес: МО
Сообщения: 46
Версия Delphi: Delphi, Lazarus
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Решений куча. Начиная от каталога из которого стартовало приложение, заканчивая поиском серверов. Тут столько всего напридумано - только выбирай.

Вы мне только ссылочку на эту кучу дайте, я дальше сам разберусь - что это за куча ... Что бы по существу ...

"Я эту самую истину выкапываю, а в это время с ней что-то такое делается, что выкапывал-то я истину, а выкопал кучу, извините... не скажу чего." [Сталкер]
__________________
Как завещал товарищ Ленин: УЧИТЬСЯ! УЧИТСЯ! И ЕЩЁ РАЗ УЧИЦЦА!
Ответить с цитированием
  #4  
Старый 02.06.2015, 00:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну вот вам для начала, по пути запуска приложения:
Код:
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  
Старый 02.06.2015, 05:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вот пример записи в реестр пути, куда поставились:
Код:
[Registry]
Root: HKCU; Subkey: Software\Mycompany\MyProduct\DB; ValueType: expandsz; ValueData: {app}\database.mdb uninsdeletekey

И поставь себе ISTools, там можно аккуратно это в нормальном интерфейсе все насетапить.
Ответить с цитированием
  #6  
Старый 03.06.2015, 22:20
Аватар для Homo-Fantasmus
Homo-Fantasmus Homo-Fantasmus вне форума
Прохожий
 
Регистрация: 23.08.2011
Адрес: МО
Сообщения: 46
Версия Delphi: Delphi, Lazarus
Репутация: 10
По умолчанию

Код:
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;

Спасибо
__________________
Как завещал товарищ Ленин: УЧИТЬСЯ! УЧИТСЯ! И ЕЩЁ РАЗ УЧИЦЦА!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter