我正在尝试使用 OCCI 和 Visual Studio 2012 c++ 连接到 Oracle 11.2。
我已按照以下步骤操作。
获取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)
为 Visual Studio 2010 提取 OCCI(这是http://www.oracle.com/technetwork/database/occidownloads-083553.html上的最新版本 )
配置
在 C:\instantclient_11_2\vc10 中添加来自 OCCI 的 oraocci11.dll 和 oraocci11d.dll。在 C:\instantclient_11_2\sdk\lib\msvc\vc10 添加 oraocci11d.lib 和 oraocci11.lib将系统路径变量中的路径设置为C:\instantclient_11_2\sdk\lib\msvc\vc10;C:\instantclient_11_2;
在 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 中设置库路径。库
编辑 VC++ 目录包括 C:\instantclient_11_2\sdk\include;$(IncludePath) 库目录:C:\instantclient_11_2\sdk\lib\msvc\vc10;$(LibraryPath)
64位配置环境
工具->选项-调试->符号->微软符号服务器(如有必要)
该程序,
#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
有人可以帮我解决这个问题吗...