1

我正在尝试使用 OCCI 和 Visual Studio 2012 c++ 连接到 Oracle 11.2。

我已按照以下步骤操作。

  1. 获取instantclient-basic-windows.x64-11.2.0.4.0、instantclient-sdk-windows.x64-11.2.0.4.0和instantclient-sqlplus-nt-11.2.0.4.0并解压到C:(那么应该是C:\instantclient_11_2)

  2. 为 Visual Studio 2010 提取 OCCI(这是http://www.oracle.com/technetwork/database/occidownloads-083553.html上的最新版本 )

  3. 配置
    在 C:\instantclient_11_2\vc10 中添加来自 OCCI 的 oraocci11.dll 和 oraocci11d.dll。在 C:\instantclient_11_2\sdk\lib\msvc\vc10 添加 oraocci11d.lib 和 oraocci11.lib

  4. 将系统路径变量中的路径设置为C:\instantclient_11_2\sdk\lib\msvc\vc10;C:\instantclient_11_2;

  5. 在 project->properties->linker->Input->Additional Dependencies C:\instantclient_11_2\sdk\lib\msvc\vc10\oraocci11.lib C:\instantclient_11_2\sdk\lib\msvc\vc10\oraocci11d 中设置库路径。库

  6. 编辑 VC++ 目录包括 C:\instantclient_11_2\sdk\include;$(IncludePath) 库目录:C:\instantclient_11_2\sdk\lib\msvc\vc10;$(LibraryPath)

  7. 64位配置环境

  8. 工具->选项-调试->符号->微软符号服务器(如有必要)

该程序,

#include "stdafx.h"
#include <iostream>
#include <occi.h>

namespace oc = oracle::occi;

int main()
{
    try
    {
        // setup
        oc::Environment* env = oc::Environment::createEnvironment(oracle::occi::Environment::DEFAULT); // 1

        try{
            oc::Connection* conn = env->createConnection("ASD", "ASD123", "dbName"); // 2
        }
        catch(const oc::SQLException& e){
            std::cout  << e.what() << std::endl; 
            exit(EXIT_FAILURE); 
        }
        oc::Environment::terminateEnvironment(env); 
    }
    catch(const oc::SQLException& e) // 7
    {
        std::cout << "Exception: " << e.what() << std::endl;
    }

    system("pause");
}

但我不断收到以下问题,

“testSample4.exe”(Win32):已加载“C:\instantclient_11_2\sdk\lib\msvc\vc10\oraocci11.dll”。无法找到或打开 PDB 文件。

testSample4.exe 中 0x000007FEFD41ADCD 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000000031E7E8 处的 oracle::occi::SQLException。

然后得到错误:属性 OCI_ATTR_USERNAME 大于最大允许长度 255

有人可以帮我解决这个问题吗...

4

0 回答 0