c++ - oracle occi getString 给出 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

标签 c++ oracle

我正在尝试通过 OCCI Oracle 查询在 ResultSet 上执行 getString,但我总是得到 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 断言。我的项目是多线程调试,我尝试将其设置为单线程调试,正如我在网上发现的那样,但这没有区别。

我有点不知道是什么导致了这个断言的发生。有人可以帮忙吗?

看来我只有 getString() 函数有它,其他任何函数都没有。

    oracle::occi::Environment* environment;
    oracle::occi::Connection* con;
    oracle::occi::Statement* stmt;
    oracle::occi::ResultSet* res;


        try{
         environment = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::DEFAULT);
         con = environment->createConnection("db", "pssw", "DATABASE");     

        std::cout << "created connection" << std::endl;

        std::stringstream query;

        query << "SELECT MOD_KEY, MOD_SCRIPTLANGUAGE, MOD_SOURCE, MOD_CODE, MOD_STYLE, MOD_TYPE ";
        query << "FROM DB.MEDICAL_OBS_DEF ";
        query << "WHERE MOD_KEY = 735";

         stmt = con->createStatement(query.str());
         res = stmt->executeQuery();

         res->setMaxColumnSize(3,100);

         std::cout << "executed query" << std::endl;
         std::string mystring;
         while (res->next())
         {

             /*mystring = */res->getString(3);  ///_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) Assert!
         }
         std::cout << "printed resultset" << std::endl;

         stmt->closeResultSet(res);
         con->terminateStatement(stmt);
        environment->terminateConnection(con);

     }catch(oracle::occi::SQLException &e){
         std::cout<<e.what();
    }

最佳答案

您是否已链接到 Oracle DLL 的调试版本(oraocci11d.liboraocci11d.dll)?

您的程序似乎使用了 Visual Studio 的内存调试选项,而您使用的 Oracle DLL 却没有。所以错误的发生是因为运行时库认为存在内存分配/释放问题。

关于c++ - oracle occi getString 给出 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4592563/

相关文章:

c++ - 模拟 - 方法和工具

c++ - 我可以使用别名模板专门化一个类模板吗?

sql - Oracle 空字符串/NULL

sql - 如何在 Oracle 中创建约束以避免重复值?

c++ - 使用结构体从 .txt 文件读取着色器

c++ - recv() 上的 http 客户端 block

sql - 获取具有最大值的行的最有效方法是什么?

oracle - 使用java.Date无法在grails中评估oracle日期字段

sql - ORA-02267 : column type incompatible with referenced column type

c++ - C++ 中的缓冲区大小