c++ oci函数的基本使用

oci函数的基本使用

ORACLE调用接口(Oracle Call Interface简称OCI)提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。

#引入库:
#include <oci.h>
#定义变量:
OCIEnv *envhp;           //环境句柄
OCIError *errhp;         //错误句柄
OCIServer *srvhp;        //服务器句柄
OCISvcCtx *svchp;        //服务环境句柄
OCIStmt *stmthp;         //语句句柄
#C++调用oci连接数据库步骤:
OCIEnvCreate():创建环境句柄,使用方式如下:
OCIEnvCreate(&envhp,OCI_DEFAULT,(dvoid*)0,NULL,NULL,NULL,0,(dvoid**)0);
OCIHandleAlloc():根据环境句柄分配相关句柄资源:
OCIHandleAlloc((dvoid*)envhp,(dvoid**)&errhp,OCI_HTYPE_ERROR,(size_t)0,(dvoid**)0);  //分配错误句柄
OCIHandleAlloc((dvoid*)envhp,(dvoid**)&srvhp,OCI_HTYPE_SERVER,(size_t)0,(dvoid**)0); //分配服务器句柄
OCIHandleAlloc((dvoid*)envhp,(dvoid**)&svchp,OCI_HTYPE_SVCCTX,(size_t)0,(dvoid**)0);  //分配服务句柄
OCIHandleAlloc((dvoid*)envhp,(dvoid**)&stmthp,OCI_HTYPE_STMT,(size_t)0,(dvoid**)0);  //分配执行语句句柄
OCIAttrSet((dvoid*)svchp,OCI_HTYPE_SVCCTX,(dvoid*)srvhp,(ub4)0,OCI_ATTR_SERVER,(OCIError*)errhp);  //设置服务使用的服务器句柄属性。
OCILogon():连接数据库,使用如下:
OCILogon(envhp,errhp,&svchp,(OraText*)username,(ub4)strlen(username),(OraText*)pwd,(ub4)strlen(pwd),(OraText*)db,(ub4)strlen(db))
如果返回OCI_SUCCESS则说明连接数据库成功,否则失败,根据失败原因查找问题。
释放oci连接步骤:
如果数据库已连接,调用函数:OCILogoff(svchp,errhp),如果成功,则调用函数:OCIHandleFree((dvoid*)envhp,OCI_HTYPE_ENV)释放环境资源句柄。
C++调用oci插入、删除、修改数据库方法:
OCIStmtPrepare():准备执行语句,使用方式如下:
OCIStmtPrepare(stmthp,errhp,(text*)(unsigned char*)p_str,(ub4)strlen(p_str),OCI_NTV_SYNTAX,OCI_DEFAULT);  //准备sql语句,将sql语句绑定到stmthp语句句柄
OCIStmtExecute():执行sql语句,使用方式如下:
OCIStmtExecute( svchp, stmthp, errhp, (ub4) 1, (ub4) 0, (OCISnapshot *) NULL,(OCISnapshot *) NULL, (ub4) OCI_DEFAULT);  //执行sql语句
OCITransCommit():提交事务,使用方式如下:
OCITransCommit(svchp,errhp,0);  //提交事务。
C++调用oci查询数据库方法:
OCIStmtPrepare():准备执行语句,使用方式如下:
OCIStmtPrepare(stmthp,errhp,(text*)(unsigned char*)p_str,(ub4)strlen(p_str),OCI_NTV_SYNTAX,OCI_DEFAULT);  //准备sql语句,将sql语句绑定到stmthp语句句柄
OCIDefineByPos():根据数据位置,定义数据格式,使用方式如下:
OCIDefineByPos(stmthp, &defnp1, errhp, 1, (dvoid*) &res, (sword) sizeof(res), SQLT_CHR, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, OCI_DEFAULT);  //绑定数据格式
OCIStmtExecute():执行sql语句,使用方式如下:
OCIStmtExecute( svchp, stmthp, errhp, (ub4) 1, (ub4) 0, (OCISnapshot *) NULL,(OCISnapshot *) NULL, (ub4) OCI_DEFAULT);  //执行sql语句
OCIStmtFetch():遍历结果集合,使用方式如下:
OCIStmtFetch(stmthp, errhp, (ub4) 1, OCI_FETCH_NEXT, 1);

相关代码见:
https://download.csdn.net/download/yidu_fanchen/10443183

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值