Всем доброго времени суток.

разбираюсь с IBPP и наткнулся на такую вещь

в теством приложении, подключаюсь к БД, выполняю запросы в основном потоке - все ОК.

пытаюсь выполнить те же самые запросы из треда (в треде делаю отдельное подключение к БД, стартую транзакции и т.д.)

вылетает ошибка:
what(): *** IBPP::SQLException ***

Context: Statement::Prepare( select * from sometable )

Message: isc_dsql_prepare failed


SQL Message : -901

Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements


Engine Code : 335544332

Engine Message :

invalid transaction handle (expecting explicit transaction start)



исходный код :

"тредовая" процедура
static unsigned int __stdcall thrproc2(void *thrnum) {
        IBPP::Database thrdb;
        static unsigned int __stdcall thrproc2(void *thrnum) {
thrdb = IBPP::DatabaseFactory(ServerName, DbName, UserName, Password, "", "WIN1251", "PAGE_SIZE 8192 DEFAULT CHARACTER SET WIN1251");
        if (thrdb->Connected() ) {cout << "Thrdb connected" << endl; }
IBPP::Transaction tr3 = IBPP::TransactionFactory(thrdb, IBPP::amWrite, IBPP::ilConcurrency, IBPP::lrWait);
        IBPP::Statement st3 = IBPP::StatementFactory(mainDB, tr3);
        tr3->Start();
        st3->Execute("select * from sometable");
}

подскажите плиз в чем может быть дело и куда смотреть?

FB 2.5. RC3  (пробовал на 2.0.6 - такая же ошибка)

win XP

система сборки: Eclipse + mingw

Иван.



Ответить