1. 所需安装包 (64 位 )
oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm
oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm
2. 安装
安装后,库文件路径为/usr/lib/oracle/10.2.0.3/client64/lib/
头文件路径为/usr/include/oracle/10.2.0.3/client64/
3. 测试程序
connclient.cpp
#include <iostream>
- #include <stdio.h>
#include <occi.h>
- using namespace oracle::occi
int main()
- {
Environment *env;
- Connection *conn;
Statement *stmt;
- //连接
string struser( “user” );
- string strpwd( “password” );
string strconn_string( “168.1.1.2:1521/sid” );
- env = Environment::createEnvironment(Environment::OBJECT);
conn = env->createConnection(struser, strpwd, strconn_string);
- if( NULL != conn )
cout<<”conn success”<<endl;
- else
cout<<”conn failed”<<endl;
- //执行sql,返回结果并显示
string strsql( “select id name from table1” );
- stmt = conn->createStatement( strsql );
ResultSet *rset = stmt-> executeQuery();
- while( rset->next() )
{
- int id = rset->getInt(1);
string strname = rset->getString(2);
- cout<<”id==”<<id<<”name==”<<name<<endl;
}
- //关闭
stmt->closeResultSet(rset);
- conn->terminateStatement(stmt);
env->terminateConnection(conn);
- Environment::terminateEnvironment(env);
return 0;
- }
#include <iostream>
#include <stdio.h>
#include <occi.h>
using namespace oracle::occi
int main()
{
Environment *env;
Connection *conn;
Statement *stmt;
//连接
string struser( “user” );
string strpwd( “password” );
string strconn_string( “168.1.1.2:1521/sid” );
env = Environment::createEnvironment(Environment::OBJECT);
conn = env->createConnection(struser, strpwd, strconn_string);
if( NULL != conn )
cout<<”conn success”<<endl; else cout<<”conn failed”<<endl;
//执行sql,返回结果并显示
string strsql( “select id name from table1” );
stmt = conn->createStatement( strsql );
ResultSet *rset = stmt-> executeQuery();
while( rset->next() )
{
int id = rset->getInt(1);
string strname = rset->getString(2);
cout<<”id==”<<id<<”name==”<<name<<endl;
}
//关闭 stmt->closeResultSet(rset);
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
return 0;
}
4. 编译
g++ -o connclient connclient.cpp -L/usr/lib/oracle/10.2.0.3/client64/lib
编译出现的问题
1) error: occi.h: No such file or directory
解决:编译时没有引入OCCI头文件
g++ -o connclient connclient.cpp -L/usr/lib/oracle/10.2.0.3/client64/lib -I/ usr/include/oracle/10.2.0.3/client64
2) 找不到对应函数
undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'
解决:编译时引入库
g++ -o connclient connclient.cpp -L/usr/lib/oracle/10.2.0.3/client64/lib -I/ usr/include/oracle/10.2.0.3/client64 -locci –lclntsh
3) 找不到库,如libstdc++.so.5
解决:OCCI库在linux编译的时候,由于linux版本太高,可能没有libstdc++.so.5 库,下载这个版本的库,即可,下载完可能会提示和libstdc++.so.6 冲突,编译时加上即可
g++ -o connclient connclient.cpp -L/usr/lib/oracle/10.2.0.3/client64/lib -I/ usr/include/oracle/10.2.0.3/client64 -locci –lclntsh /usr/lib/libstdc++.so.5
5. 执行
./connclient
输出结果:
1 name1
2 name2