繁体   English   中英

创建连接时,Visual Studio 2010报告Oracle OCCI 11g的“访问冲突”

[英]Visual studio 2010 reporting “Access violation” for Oracle OCCI 11g when creating connection

当我尝试在Microsoft Visual Studio 2010上与Oracle OCCI 11g建立连接时,出现以下错误:

OracleOCCI.exe中0x005a79c9处未处理的异常:0xC0000005:访问冲突读取位置0x316c6561。

我的代码非常简单,如下所示:

class DMLDemo
{
private:

    Environment *env;
    Connection *conn;
    Statement *stmt;

public:

    DMLDemo (string user, string passwd, string db)
    {
        env = Environment::createEnvironment (Environment::DEFAULT);
        if(env==nullptr)
            cout << "Failure";


            try
            {
                conn = env->createConnection (user, passwd, db);
        }
            catch (exception* e)
            {
                cout << "Error";
            }


    }

    ~DMLDemo ()
    {
        env->terminateConnection (conn);
        Environment::terminateEnvironment (env);
    }

};


int _tmain(int argc, _TCHAR* argv[])
{
    //01. Test Simple Connection
    try
    {
        DMLDemo demo("scott","Michael1","");
    }
    catch (exception* e)
    {
        cout << e->what();

    }

    getche();


    return 0;
}

我用谷歌搜索了一些答案,似乎oracle dll版本和VC版本之间的兼容性出了问题。

有解决方案的人吗? 或者只是更改为VS 2005?

我一直在为Oracle 11g(11.2.0)32位数据库构建VS08和VS10接口。 我发现在V9目录中提供的许多提供occi11x.dll的站点(包括我自己的Oracle安装)与VS08控制台应用程序不兼容。 最后,我必须从公司的另一个位置将经过测试的“金”二进制文件发送给我。 将x86'gold'dll安装在控制台启动目录中后,相同的代码即可正常运行。

我正在VS10 occi11x.dll中搜索相同的适用性。 到目前为止,我还没有找到它。 创建环境后,我也遇到类似的错误。 有些dll允许我建立连接,但尝试执行ResultSet-> next()时出错,其他dll甚至不允许我执行executeQuery()。 我认为甲骨文没有适当地管理这个问题。

“损坏”的VS08 dll有时具有与“金色” dll相同的正确日期和文件大小。 也许对dll进行内部搜索会发现哪些是可行的。

http://www.oracle.com/technetwork/database/occidownloads-083553.html是oracle用于提供各种occi dll以匹配Visual Studio的站点。 也许他们的VS12版本实际上与Oracle12c数据库更兼容。

好的,最后我安装了VS 2008,代码工作正常。 似乎2008年编译的Oracle DLL在VS2010中不起作用。

也许有一天,Oracle可以发布其VS2010 Dlls。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM