前段时间因项目需要涉到一点数据库,在配置时查了很多资料,花了半天时间终于搞定。
对之前所学所用进行一点总结,希望对你有帮助。
1、访问方法比较
C++访问Oracle数据方法比较多,目前已知的有ADO、ODBC、DAO、Pro*C/C++、OCI/OCCI等等,关于方法的比较可以参考这个链接:http://blog.csdn.net/sunboy_2050/article/details/6624684。经过多方比较,最终选择了OCCI。
2、win7_x64+ VS2013 + OCCI 环境配置
本人电脑是win7 64位系统,Oracle数据库是11g,VS2013。
1)环境配置主一般都涉及以下几个问题:
(1)头文件目录; (2)相关库以及相关库目录;(3)动态链接库。
2)相关文件准备
有人说,配置OCCI需要下载补丁包,下载instantclient,其实没有那么麻烦。
在Oracle 11g安装完成后,就已经提供了头文件以及库文件。头文件目录为:../product/11.2.0/dbhome_1/OCI/include,库文件目录为:../product/11.2.0/dbhome_1/OCI/lib/MSVC/vc9/。
3)配置 VS2013
VS要设置为x64,不是win32哦。
设置包含路径、库路径以及附加库,如下图
4)最后一个问题,设置动态链接库。
好吧,这个我承认我直接拷贝了oraocci11.dll文件到工程目录,当然如果你喜欢,你肯定知道可以设置环境变量,或者将其拷贝到其他的Path路径下,都是可以的。
3、测试用例
晚上找的,很简单的一个例子。
<span style="font-family:SimSun;font-size:12px;">#include<occi.h>
#include<iostream>
using namespace std;
using namespace oracle::occi;
int main()
{
const string userName = "SCOTT";
const string password = "aa";
const string connString = "localhost:1521/orcl";
try
{
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *con = env->createConnection(userName, password, connString);
cout << "Success to connect!" << endl;
Statement *stmt = con->createStatement();
stmt->setSQL("select * from emp");
ResultSet *rs = stmt->executeQuery();
while (rs->next())
{
cout << "ID:" << endl;
}
con->terminateStatement(stmt);
env->terminateConnection(con);
Environment::terminateEnvironment(env);
}
catch (SQLException &ex)
{
cout << ex.what() << endl;
}
return 0;
}</span>
最后,如果你对于其他环境的配置有疑惑,不妨看看这个链接。http://www.hktrace.com/bianchengkaifa/452.html