0.服务器的环境已经搭建完毕,rhel5.6 x86_64 oracle10g(10203)x86_64。scott用户下又表test,两个字段id和name ,类型分别为number和varchar。
1.登录http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html,下载oracle提供的c++接口。下载两个rpm包,oracle-instantclient-basic-10.2.0.3-1.x86_64和oracle-instantclient-devel-10.2.0.3-1.x86_64。将两个包上传至服务器,并解压安装。
2.建立一个c++的目录,编辑文件connclient.cpp
3.键入下面代码
#include <iostream>
#include <string>
#include <occi.h>
using namespace std;
using namespace oracle::occi;
int main()
{
Environment *env;
Connection *conn;
Statement *stmt;
//build a connection
string struser("scott");
string strpwd("scott");
string strconn_string("127.0.0.1:1521/orcl");
env = Environment::createEnvironment(Environment::OBJECT);
conn = env->createConnection(struser, strpwd, strconn_string);
if( NULL != conn)
cout << "conn success" << endl;
else
cout << "conn failed" <<endl;
//execute sql statement
string strsql("select * from test");
stmt = conn->createStatement(strsql);
ResultSet *rset = stmt->executeQuery();
while(rset->next()){
int id = rset->getInt(1);
string name = rset->getString(2);
cout<<"id="<<id<<",name="<<name<<endl;
}
//close resourses
stmt->closeResultSet(rset);
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
return 0;
}
执行编译命令:
提示libstdc++.so.5的格式错误,因为整个环境是64位的,所以需要64位的libstdc++.so.5
在执行编译命令:
出错信息比较多,只看第一行waring:libnnz10.so,need by ……,经查阅相关资料,需要进行下面的配置。
4.
键入如下信息
接着需要时配置生效:
5.再尝试编译
在root用户下
成功!
在oracle用户下:
解决方法:
以oracle身份创建cpp文件编译成功后,便可以运行
如果还有错误提示试试下面的方式,关闭防火墙。
将SELINUX=enforcing改为SELINUX=disabled
重新启动即可。