Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > ADO: как вы устанавливаете коннект с БД в


Автор: malor 14.11.2011, 12:23
Вставляете в FormShow() строку 
ADOConnection.Connected := true
обертываете ее в блок try-catch и если соединение прошло успешно, то затем прописываете 
свойствам Active всех своих Query-элементов значение true?
Цитата
ADOQuery1.Active := true;
.......................
ADOQueryN.Active := true;


Зачем в строке подключения указывается пароль, ведь он уже прописан в ODBC-источнике данных?

P.S. Хроники ADO:
http://forum.vingrad.ru/topic-83647.html
http://forum.vingrad.ru/topic-290459.html
http://forum.vingrad.ru/forum/topic-199283/anchor-entry1437862/0.html
http://forum.vingrad.ru/topic-228924.html
http://www.connectionstrings.com/mysql
http://forum.vingrad.ru/forum/topic-195038/view-all.html
http://forum.vingrad.ru/topic-73655.html

Автор: Данкинг 14.11.2011, 13:13
Вопрос-то конкретно в чём?

Добавлено через 22 секунды
Цитата(malor @  14.11.2011,  13:23 Найти цитируемый пост)
Зачем в строке подключения указывается пароль, ведь он уже прописан в ODBC-источнике данных?

Ты про какую СУБД?

Автор: malor 14.11.2011, 14:07
Д>>Вопрос-то конкретно в чём?

Может что-то забыл упомянуть, что желательно делать при подключениях.


Д>>Ты про какую СУБД?

Про MySQL 5.5.17.

Автор: Antimol 14.11.2011, 14:55
Вот тут неплохо описано http://mirsovetov.net/podklyuchenie-k-mysql-s-pomoshchyu-delphi
Правда используются компоненты ZeosLib. Я не следил актуальность, но последняя версия кажется для Delphi 2010

Я сейчас использую компоненты UniDac. 

Это что касается используемых компонет,  а при использовании ОДБЦ нужно настраивать подключение, много мороки одним словом.

Наверняка с ОДБЦ использует свой механизм, а АДО свой, и для подтверждения личности нужно вводить логин/пароль и тут и там. 

Автор: Данкинг 14.11.2011, 17:00
malor, ну так что мешает попробовать подключение на практике-то? Заодно и выяснишь, что забыл.

Автор: malor 14.11.2011, 17:32
Отключил в службах MySQL и запустил прогу:

user posted image

Код
procedure TManagerForm.FormShow(Sender: TObject);
begin

  try
    DataManagerModule.ADOConnectionManager.Connected := true;
  except
    on E: Exception do
      begin
        ShowMessage('Нет соединения с сервером!');
        Exit;
      end;
  end;

  GetData(Sender);

end;

Автор: superVad 15.11.2011, 14:52
malor, какой вопрос?

Автор: malor 15.11.2011, 16:31
Допустим у вас на форме несколько гридов, получающих в себя данные из ADOQuery-компонентов. При старте программы вы сделали
ADOConnection.Connected := true
и пользователь начал ей пользоваться. 

Спустя несколько часов СУБД стала по какой-либо причине недоступной.
Программа продолжает быть открытой у пользователя на компе. 

В некий момент происходит обновление данных в гриде:
ADOQuery элемент выставляет свое свойство Active равным true. Возникает эксепшен. Каков правильный подход?
Перед выполнением каждых строк вида 
ADOQuery.Active  := true
ADOQuery.ExecSQL

делать присвоение (обернутое в try-except)
ADOConnection.Connected := true;
?

Автор: superVad 15.11.2011, 16:45
malor, как вариант для ADOConnection в событии onDisconnect выдавать сообщение и закрывать программу. Перед обычным выходом присваивать этому событию nil.
Надо проверить конечно - сработает ли.

Автор: malor 15.11.2011, 18:50
Останавливал в службах MySQL сервер, но в процедуру 
procedure TDataManagerModule.ADOConnectionManagerDisconnect(Connection: TADOConnection; var EventStatus: TEventStatus);
прога не заходила...

Пост про дисконнекты:
http://forum.vingrad.ru/forum/topic-290459/hl/ondisconnect/index.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)