| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > ADO: как вы устанавливаете коннект с БД в |
| Автор: malor 14.11.2011, 12:23 | ||
| Вставляете в FormShow() строку ADOConnection.Connected := true обертываете ее в блок try-catch и если соединение прошло успешно, то затем прописываете свойствам Active всех своих Query-элементов значение 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 |
| Автор: 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 и запустил прогу:![]()
|
| Автор: 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 |