Russian Qt Forum
Ноябрь 24, 2024, 06:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [QtSQL][ODBC][FireBird] open выдаёт исключение.  (Прочитано 3319 раз)
m4n71k0r
Гость
« : Апрель 12, 2011, 14:15 »

Qt собран вместе с ODBC c помощью VS2010.

В коде:
Код
C++ (Qt)
...
 
 {
   QSqlDatabase database = QSqlDatabase::addDatabase("QODBC", "ODBC_DIMEX");
   database.setHostName(ui->ODBC_host_line_edit->text());
   database.setDatabaseName(ui->ODBC_DB_name_line_edit->text());
   database.setUserName(ui->ODBC_login_line_edit->text());
   database.setPassword(ui->ODBC_password_line_edit->text());
   if ( !database.open() )
   {
     ui->status_label->setText(trUtf8("<b style='color:red'>&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1086;&#1090;&#1082;&#1088;&#1099;&#1090;&#1080;&#1103; &#1073;&#1072;&#1079;&#1099; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; ODBC:DIMEX</b>"));
     return;
   }
   ODBC_connected = true;
 }
 
...
 

При открытии выдаёт в консоль приложения вот такую простыню:

Код:
Exception at 0x759d9617, code: 0xe06d7363: C++ exception, flags=0x1 (execution cannot be continued)

at:
0     KERNELBASE!RaiseException 0x759d9617
1     F:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp:161 (OdbcFb!_CxxThrowException) 0x100b927f
2     OdbcFb!IscDbcLibrary::IscStatement::prepareStatement 0x10028a5e
3     OdbcFb!IscDbcLibrary::IscOdbcStatement::prepareStatement 0x1001fc45
4     OdbcFb!OdbcJdbcLibrary::OdbcStatement::sqlPrepare 0x1007e036
5     OdbcFb!OdbcJdbcLibrary::OdbcStatement::sqlExecDirect 0x100832cf
6     OdbcFb!SQLExecDirectW 0x1004d1ec
7     ODBC32!VRetrieveDriverErrorsRowCol 0x6e75e376
8     ODBC32!SQLExecDirectW 0x6e78b2e0
9     C:\Qt\2010.05\qt\src\sql\drivers\odbc\qsql_odbc.cpp:1993 (QtSqld4!QODBCDriverPrivate::checkUnicode) 0x6ec768aa
10    C:\Qt\2010.05\qt\src\sql\drivers\odbc\qsql_odbc.cpp:1901 (QtSqld4!QODBCDriver::open) 0x6ec76244
11    C:\Qt\2010.05\qt\src\sql\kernel\qsqldatabase.cpp:846 (QtSqld4!QSqlDatabase::open) 0x6ec5a694

...

Какие-то соединения, выполнение которых не может быть продолжено  Непонимающий

При этом дальнейшие запросы выполняются нормально и без проблем.
Что посоветуете по этому поводу? Вдруг программка навернётся в будущем?

upd: выяснил, что исключение кидал FireBird ODBC Connector. Хотел его откомпилировать из исходников для себя, но умер компилятор =)))

Код:
1>c:\downloads\software\odbcfb-source-2.0.0151\odbcjdbc\odbcstatement.cpp(1484): fatal error C1001: An internal error has occurred in the compiler.
1>  (compiler file 'f:\dd\vctools\compiler\utc\src\p2\x86\fpreg.c', line 949)

ужас )))

upd2: Удивительно, но под DEBUG оно собралось =)
« Последнее редактирование: Апрель 13, 2011, 11:17 от m4n71k0r » Записан
Whiplash
Гость
« Ответ #1 : Апрель 13, 2011, 11:36 »

А принципиально с файербёрдом юзать ОДБЦ? Он, говорят, у неё слегка кривоват (ну, родной который).
Записан
m4n71k0r
Гость
« Ответ #2 : Апрель 13, 2011, 12:01 »

На счёт кривости не знаю, но быдлокода там мно-о-ого тысяч строк присутствует, если о коннекторе речь идёт.
Программка - конвертор, поэтому было непринципиально даже, какой язык использовать. Ещё хотел написать на Perl, но чёрт дёрнул писать на любимом языке, чтобы не переключаться сильно ( вдруг оно мне пригодится в будущем )  =)))
Скорее всего - это какой-то баг. И удивило, что коннектор не собрался в релизе, но при этом собрался в дебаге.

Время - деньги. Не буду обращать внимания (потом разберусь) или, если вдруг заглючит, напишу конвертор на Perl.

Спрашивал по той причине, что может кто сталкивался и смог победить =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 20.