SQL запрос из разных потоков
От: Minigo  
Дата: 25.03.09 13:07
Оценка:
Подскажите, в приложении создаются разные потоки. Из этих разных потоков я выполняю запрос к MS SQL 2005 по одному хэндлу:

SQLHSTMT    sqlHstmt;
        SQLRETURN    sqlRet;
        SQLINTEGER    sqlMsgType = 0;
        SQLINTEGER    cbMsgType = 0;

        std::string query("select [TYPE] from OUTBOX where MSGUID='");
        query.append( guid );
        query.append( _T("'") ); 

        sqlRet = SQLAllocHandle( SQL_HANDLE_STMT, mdb_->m_hdbc, &sqlHstmt );
        if ( sqlRet != SQL_SUCCESS )
        {
            SQLCHAR err_msg[ 256 ];
            mdb_->checkError( sqlRet, SQL_HANDLE_STMT, sqlHstmt, err_msg, sizeof(err_msg) - 1 );
            LogToLogEx( "Ошибка чтения из БД: %s", (char*)err_msg );
            return;
        }

        sqlRet = SQLExecDirectA( sqlHstmt, (SQLCHAR*)query.c_str(), SQL_NTS ); 
        if ( sqlRet != SQL_SUCCESS )
        {
            SQLCHAR err_msg[ 256 ];
            mdb_->checkError( sqlRet, SQL_HANDLE_STMT, sqlHstmt, err_msg, sizeof(err_msg) - 1 );
            LogToLogEx( "Ошибка чтения из БД: %s", (char*)err_msg );
            return;
        }

                sqlRet = SQLBindCol( sqlHstmt, 1, SQL_C_ULONG, &sqlMsgType, 0,  &cbMsgType );
        if ( sqlRet != SQL_SUCCESS )
        {
            SQLCHAR err_msg[ 256 ];
            mdb_->checkError( sqlRet, SQL_HANDLE_STMT, sqlHstmt, err_msg, sizeof(err_msg) - 1 );
            LogToLogEx( "Ошибка чтения из БД: %s", (char*)err_msg );
            return;
        }


на строке
sqlRet = SQLExecDirectA( sqlHstmt, (SQLCHAR*)query.c_str(), SQL_NTS );


всё зависает. Вроде в MSDN написано для выполнение запросов по одному hdbc в разных потоках возможно. Если кто с подобным сталкивался, подскажите в чём проблема ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.