- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 下Otl 连接oracle的简单例子
这个otl弄的很纠结的了,上网上在linux 下只见有例子 ,但是都没见有编译的命令出现,搞得一直没有编译通过。不过最后终于弄好了
编译的时候出现的几个问题了:
1 otl_connect otl_connect was not declared in this scope 还有not a type
2 /oci.h:461:23: error: oratypes.h: No such file or directory
3 undefined reference to `OCIServerDetach 等
等等 主要的问题还是一些头文件没有被包含进去
下面参照一个例子来说明:
//文件名称:otloracle.cpp
#include stdio.h //c的标准头
#include iostream//c++头文件
#define OTL_ORA10G //指定连接的数据库类型 这个是必须的了,
//且注意了 这些宏必须定义在 #include otlv4.h,不然编译时会报otl_connect not a type
// 即说:otl_connect 并不是一种类型,但是当你去 otlv4.h 中去查看时,确实有这么的一
//个类
//相关的宏定义列表 /otl3_compile.htm
#define OTL_ANSI_CPP //使用标准的c++库
#define ConnectDb tspdb/tspdb@tspdb //我的数据连接的用户和密码以及ORACLE_SID
#include otlv4.h //这个就是otl的库了 使用otl只有这么一个头文件 ,相关缺少的库文件在编译的时候需要再去查,一般oracle 就是一个libclntsh.so
//#include oci.h //这个没什么用,不需要
using namespace std; //标准的I/O命名空间
char strSelect[100]={select businum,businame,crt_date from m01_busi_type}; //查询的语句
otl_connect oracledb; //定义个数据库连接实例
int selectDB() //查询的函数
{
otl_stream oraout(100,strSelect,oracledb);
int count=0;
char myfeild1[64]=;
char myfeild2[64]=;
char myfeild3[64]=;
coutbusinum businame crt_dateendl;
while(!oraout.eof())
{
oraoutmyfeild1;
oraoutmyfeild2;
oraoutmyfeild3;
count++;
coutmyfeild1 myfeild2 myfeild3endl;
}
return 0 ;
}
int main()
{
try{
otl_connect::otl_initialize(); //初始化,这个是必须的了,注意了前面是 otl_connect
oracledb.rlogon(ConnectDb); //连接数据库
cout======== start to select table record ====endl;
selectDB();//执行查询语句
}
catch(otl_exception p)
{
cerrp.msgendl;
cerrp.stm_textendl;
cerrp.var_infoendl;
}
oracledb.logoff();
return 0;
}
下面makefile:
otloracle:
g++ -g -I. -I/oradb/ora10g/oracle/product/10.2.0/db_1/rdbms/public/ -L/oradb/ora10g/oracle/product/10.2.0/db_1/lib/ -lclntsh -o otloracle otloracle.cpp
说明:
这里面的 -I. 因为我的otlv4.h 和otloracle.cpp在一个目录下
-I/oradb/ora10g/oracle/product/10.2.0/db_1/rdbms/public/ 这个也是必须的
不包含则编译报错:(即oratypes.h等头文件是在/oradb/ora10g/ora
文档评论(0)