您的位置:首页 > 数据库 > Oracle

C++访问ORACLE数据库

2015-12-30 09:49 543 查看
首先,参考资料是官方文档:https://docs.oracle.com/database/121/LNCPP/toc.htm

OCCI要访问ORACLE数据库,需要几部分文件:include头文件,lib库文件,dll文件,其实基本步骤是怎么找到这些文件。

获取这些文件,需要在oracle官网下载几个包:

1:Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications

2:Instant Client Package - SDK: Additional header files and an example makefile for developing Oracle applications with Instant
Client

3:OCCI接口:Oracle C++ Call Interface

分别下载这三个包:

1:Instant Client Package - Basic、Instant Client Package - SDK两个包的下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html(其他平台:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html)

选中一个版本,所选版本需要高于oracle数据库的版本;且这两个包的版本要一致。

2:OCCI接口下载地址:http://www.oracle.com/technetwork/database/occidownloads-083553.html

选中一个版本,该版本要和前两个包的版本保持一致。从该下载页的表格中可以看出,VS2010提供了zip包,而之前的VS版本则需要安装oracle客户端才能访问数据库,所以使用vs2010就方便多了,只需要相应的库文件即可。

下载完成后:

分别解压三个包:

1:所需的include头文件在instantclient-sdk-nt-11.2.0.4.0\instantclient_11_2\sdk\include路径下(Instant
Client Package - SDK包)

2:lib文件在OCCI接口包中:oraocci11.lib或者oraocci11d.lib(SDK包中也有lib文件,但测试发现用不上)

3:dll文件在OCCI接口包中的:oraocci11.dll或者oraocci11d.dll,以及Instant
Client Package - Basic包中的:oraociei11.dll、oci.dll、orannzsbb11.dll(如果orannzsbb11不要也可以,该包下的其他dll、sym、exe文件不用管,至于具体作用还没来得及研究)。

参考代码:

#include "occi.h"
using namespace oracle::occi;

#include <iostream>
#include <string>
using namespace std;

int testOracle(){

Environment *env;
try
{
env =Environment::createEnvironment(Environment::DEFAULT);
cout<<"success"<<endl;
string name = "root";
string pass = "root";
string srvName = "//171.29.34.41:1521/ORCL";

Connection *conn = env->createConnection(name, pass,srvName);
cout<<"conn success"<<endl;
Statement *stmt = NULL;
ResultSet *rs = NULL;
string sql = "select \"StorageServerPath\" from \"temp\"";

stmt = conn->createStatement(sql);
rs = stmt->executeQuery();
while (rs->next()) {
cout <<rs->getString(1)<<endl;
}

env->terminateConnection(conn);
}
catch(SQLException e)
{
cout<<e.what()<<endl;
return -1;
}
Environment::terminateEnvironment(env);
cout<<"end!"<<endl;

return 0;
}

int main()
{
testOracle();

getchar();
return 0;
}


其他参考文章:

C#
使用OCCI 连接Oracle 数据库:http://blog.csdn.net/superhackerzhang/article/details/7648235

VC8
+ OCCI 连接oracle 11g(11.2):http://blog.csdn.net/yangxingya/article/details/6005133
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: