Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2012, 18:03   #1
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию ADOConnection ошибка соединения с сервером БД

Здравствуйте. Возникла такая вот проблема.
Пытаюсь создать форму подключения к серверу БД. На форме один едит в который вводится имя сервера затем это имя заталкивается в свойство ConnectionString компонента ADOConnection1 и активизируется соединение.
Как бы все работает но….. если указать ошибочное имя сервера то выходит не мое «запланированное» сообщение, а сразу вызывается исключение и прога аварийно завершается причиной исключения является строка
Код:
DM->ADOConnection1->Connected=true;
(по умолчанию это свойство установлено в фолс).
Есть возможность проверить соединение с базой данных без строчки
Код:
DM->ADOConnection1->Connected=true;
????
Или может проще что то сделать с исключением?
Код:
//Получение имени компьютера
        unsigned long Size = MAX_COMPUTERNAME_LENGTH + 1;
        char *Buffer = new char[Size];
        GetComputerName(Buffer, &Size);

        // Строка соединения с сервером БД
        DM->ADOConnection1->ConnectionString="Provider=SQLOLEDB.1;
Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=UCHET_KADROV;Data Source="+
        Edit1->Text+";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;
Workstation ID="+Buffer+";Use Encryption for Data=False;Tag with column collation when possible=False";

        //Активизируем соединение
        DM->ADOConnection1->Connected=true;

        // Проверяем соединение
       if (!DM->ADOConnection1->Connected)
       ShowMessage("Ошибка: не удалось соединиться с базой данных");
Спасибо за советы.
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол

Последний раз редактировалось atenon; 01.08.2012 в 18:35.
atenon вне форума Ответить с цитированием
Старый 01.08.2012, 18:10   #2
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Код:
try {
//ваш код
}
catch(){
ShowMessage("Неправильно выбран сервер подключения"); //обработка любой ошибки в коде
}
Проверку на подключение можно убрать. Кончено, можно еще проверять тип ошибки в catch() для уточнения.

Последний раз редактировалось Drugnir; 01.08.2012 в 18:21.
Drugnir вне форума Ответить с цитированием
Старый 01.08.2012, 18:34   #3
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Чета не получилось.
То же самое исключение выходит.
Попробовал еще вот так:
Код:
try {
        //Получение имени компьютера
        unsigned long Size = MAX_COMPUTERNAME_LENGTH + 1;
        char *Buffer = new char[Size];
        GetComputerName(Buffer, &Size);

        // Строка соединения с сервером БД
        DM->ADOConnection1->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;
Persist Security Info=False;Initial Catalog=UCHET_KADROV;Data Source="+
        Edit1->Text+";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;
Workstation ID="+Buffer+";Use Encryption for Data=False;Tag with column collation when possible=False";

        //Активизируем соединение
        DM->ADOConnection1->Connected=true;
        }
        catch(EDatabaseError &Err)
        {
                ShowMessage("Неправильно выбран сервер подключения");
        }
Тоже проблему не решило ((((
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 01.08.2012, 18:41   #4
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Если вы запустили через отдачик, то ошибка будет появляться. Если кнопку запуска приложения нажать, то не будет.
Drugnir вне форума Ответить с цитированием
Старый 01.08.2012, 19:11   #5
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Спасибо за идею.
Проблему решило Tools->Debugger Options...->Lenguage Exceptions
убрать галочку Stop on Delphi Excptions
и код
Код:
#include <comobj.hpp>
 #include <utilcls.h>
try {
        //Получение имени компьютера
        unsigned long Size = MAX_COMPUTERNAME_LENGTH + 1;
        char *Buffer = new char[Size];
        GetComputerName(Buffer, &Size);

        // Строка соединения с сервером БД
        DM->ADOConnection1->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;
        Persist Security Info=False;Initial Catalog=UCHET_KADROV;Data Source="+
        Edit1->Text+";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;
        Workstation ID="+Buffer+";Use Encryption for Data=False;Tag with column collation when possible=False";

        //Активизируем соединение
        DM->ADOConnection1->Connected=true;
        }
        catch(EOleException& e)
        {
                ShowMessage("Неправильно выбран сервер подключения");
        }
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Соединение с сервером ADOConnection atenon C++ Builder 3 22.07.2012 21:44
Ошибка соединения kilogram PHP 4 22.06.2012 16:57
Нет соединения с удаленным сервером. Olegzxc PHP 3 19.06.2012 13:45
Создать браузер с окном отображающий динамику обмена между клиентом и сервером с момента установления соединения по протоколу TCP. aasavelev Работа с сетью в Delphi 0 22.02.2012 18:30
Ошибка соединения с FTP Nikirinka HTML и CSS 13 25.06.2011 22:50