Консультация № 79213
21.03.2007, 12:14
0.00 руб.
0 4 4
Добый день, подскажите как проверить при старте приложения его соединение с базой(Interbase). Бо если соединение отсутствует программа мягко говоря вылетает....
Заранее благодарен.
Ипользую IBDatabase, IBQuery

Обсуждение

Неизвестный
21.03.2007, 12:25
общий
это ответ
Здравствуйте, Яковлев Евгений!
А почему бы не использовать исключения, при работе с базами данных они очень помогают.
Неизвестный
21.03.2007, 12:31
общий
это ответ
Здравствуйте, Яковлев Евгений!

Узнать подключена БД или нет можно через свойство IBDatabase.Connected.

Соединение с БД я обычно делаю примерно так:
В design time делаю IBDatabase.Connected = false;

При запуске приложения (допустим в onShow главной формы) читаю параметры подключения (допустим из ini файла), а после этого уже подключаюсь к БД.

Типа такого:
IBDatabase.Close();
IBDatabase.DatabaseName = ‘Тут пишем путь к БД‘;
// задаем параметры подключения
IBDatabase.Params->Clear();
IBDatabase.Params.Add(‘lc_ctype=WIN1251‘);
IBDatabase.Params.Add(‘user_name=‘+UserName);
IBDatabase.Params.Add(‘password=‘+Password);
// подключаемся к БД
IBDatabase.Open();

Надеюсь, что ответил в тему..

давно
Мастер-Эксперт
425
4118
21.03.2007, 13:35
общий
это ответ
Здравствуйте, Яковлев Евгений!
если соединение отсутствует, то Вы его должны установить. От отсутствия соединения программа не должна вылетать.
Наверное Вы имели в виду, что Ваша программа вылетает, если соединение с БД установить не удалось. В этом случае Вы должны использовать Try .. Except:
<code>
Try
IBDatabase.Open;
Except
MessageBox(0, PChar(‘Не удалось открыть базу данных: ‘+IBDatabase.DatabaseName), ‘О, ужас...‘, MB_ICONSTOP+MB_OK);
End;
</code>
Если базу данных не удалось открыть методом Open, то выдается соответствующее сообщение и программа не вылетает. Естественно, при этом Вам нужно предусмотреть действия, которые должен сделать пользователь, если открыть БД не удалось.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
21.03.2007, 13:38
общий
это ответ
Здравствуйте, Яковлев Евгений!
if not MainIBDatabase.TestConnected then...
Форма ответа