linux下occi使用

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>  

  1. #include <stdio.h>  


#include <occi.h>   

  1. using namespace oracle::occi  


int main()  

  1. {  


Environment *env;  

  1. Connection *conn;  


 Statement *stmt;  

  1. //连接   


string struser( “user” );  

  1. string strpwd( “password” );  


string strconn_string( “168.1.1.2:1521/sid” );  

  1. env = Environment::createEnvironment(Environment::OBJECT);  


 conn = env->createConnection(struser, strpwd, strconn_string);  

  1. if( NULL != conn )  


    cout<<”conn success”<<endl;  

  1. else  


    cout<<”conn failed”<<endl;  

  1. //执行sql,返回结果并显示   


string strsql( “select id name from table1” );  

  1. stmt = conn->createStatement( strsql );  


ResultSet *rset = stmt-> executeQuery();  

  1. while( rset->next() )  


{  

  1.     int id = rset->getInt(1);  


    string strname = rset->getString(2);  

  1.     cout<<”id==”<<id<<”name==”<<name<<endl;  


}  

  1. //关闭   


stmt->closeResultSet(rset);  

  1.  conn->terminateStatement(stmt);  


env->terminateConnection(conn);  

  1.  Environment::terminateEnvironment(env);  


return 0;  

  1. }  

 

 

 

#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值