OCI开发 小结

OCI是oracle提供的一组接口供开发者使用,以便开发oracle数据库的程序应用,就OCI的开发过程中自己的一点教训做一个总结:

一.首先从环境搭建说起

oracle数据库以Oracle10.2g为例:

oci开发环境的搭建,网上有很多,我也简单说一下我的环境搭建步骤:

输入地址:http://www.oracle.com/technetwork/topics/linuxsoft-082809.html

选择Version 10.2.0.4(对应oracle服务器版本是 10.2.0.1.0 )
下载oracle-instantclient-basic-10.2.0.4-1.i386.rpm
下载oracle-instantclient-devel-10.2.0.4-1.i386.rpm(sdk)
下载oracle-instantclient-sqlplus-10.2.0.4-1.rpm(sqlplus)

安装以上文件
安装时可以使用rpm -qlp查看程序安装的目标路径一边配置环境变量

进入到文件/usr/lib/oracle/10.2.0.4/client
创建目录network
进入network,创建目录admin
进入目录admin,创建文件tnsnames.ora,编辑tnsnames.ora内容:
trade =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.*.*)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER=DEDICATED)
      (SERVICE_NAME = trade)
    )
 )

保存退出。
进入到oracle用户
su - oracle
cd ~

配置环境变量
export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE/network/admin
export PATH=$PATH:$ORACLE_HOME/bin

执行命令 source .bashrc
执行命令chmod -R a+rX $ORACLE_HOME
sqlplus trade/trade@trade

这样我们就可以在命令行下用pl/sql语言来操作数据库。

oci的开发环境基本上也就搭建好了。

二.OCI连接oracle的基本步骤:

     oci的基本函数:

1。创建OCI环境:

    sword  OCIEnvCreate(OCIEnv** envhpp,ub4 mode,const dvoid* ctxp, const dvoid* (*malicfp)(dvoid* ctxp,size_t size),const dvoid *(ralocfp)(dvoid* ctxp,dvoid *memptr,size_t newsize),const void *(*mfreefp)(dvoid *ctxp,dvoid *memptr),size_t xstramemsz,dvoid **usrmempp);

2。申请/释放据并

  sword OCIHandleAlloc(const dvoid *parenth,dvoid **hndlpp,ub4 type,size_t  xtramem_sz,dvoid** usrmempp);

3.读取/设置句柄属性

sword OCIAttrSet(dvoid *trgthndlp,ub4 trghndltyp,dvoid *attributep,ub4 size,ub4 attrtype,OCIError* errhp);

4.连接/断开服务器:

 多用户连接方式:

sword OCIServerAttach(OCIServer* srvhp,OCIError *errhp,const text *dblink,sb4 dblink_len,ub4 mode);

sword OCIServerDetach(OCISever* srvhp,OCIError *errhp,ub4 mode);

但用户方式连接

sword OCILogon(OCIEnv* envhp,OCIError *errhp,OCISvcCtx **svchp,const text* username,ub4 uname_len,const text *password,ub4 passwd_len,const text* dbname,ub4 dbname_len);

sword OCILogoff(OCISvcCtx *svchp,OCIError *errhp,OCISession *usrhp,ub4 credt,ub4 mod);

5.开始/结束一个会话

sword OCISessionBegin(OCISvcCtx *svchp,OCIError *errhp,OCISession *usrhp,ub4 credt,ub4 mode);

sword OCISessionEnd(OCISvcCtx *svchp,OCIError *errhp,OCISession *usrhp,ub4 mode);

6.读取错误信息

sword OCIErrorGet(dvoid * hndlp,ub4 recordno,text* sqlstate,sb4 *errcodep,text* bufp,ub4 bufsiz,ub4 type);

7.准备SQL语句

sword OCIStmtPrepare(OCIStmt *stmtp,OCIError* errhp,const text* stmt,ub4 stmt_len,ub4 language,ub4 mode);

8.帮定输入参数

OCIBindArrayOfStruct();

OCIBindByName();

OCIBindByPos();

OCIBindByDynamic();

OCIBindObject();

9.执行SQL语句

sword OCIStmtExecute(OCISvcCtx *svchp,OCIStmt *stmthp,OCIError* errhp,ub4 iters,ub4 rowoff,const OCISnapshot *snap_out,ub4 mode);

10.定义输出变量

OCIDefineArrayOfStruct();

OCIDefineByPos();

OCIDefineDynamic();

OCIDefineObject();

11.提取结果

sword OCIStmtFetch(OCIStmt *stmthp,OCIError *errhp,ub4 nrows,ub2 orientation,ub4 mode)

12。事务操作

开始一个事务:

sword OCITransStart(OCISvcCtx* svchp,OCIError* errhp,uword timeout,ub4 flags);

准备一个事务:

sword OCITransPrepare(OCISvcCtx *svchp,OCIError *errhp,ub4 flags);

sword OCITransForget(OCISvcCtx *svchp,OCIError *errhp,ub4 flags);

断开一个事务:
sword OCITransDetach(OCISvcCtx *svchp,OCIError* errhp,ub4 flags);

提交一个事务:

sword OCITransCommit(OCISvcCtx* svchp,OCIError *errhp,ub4 flags);

回滚一个事务:

sword OCITransRollback(dvoid *svchp,OCIError *errhp, ub4 flags);

基本要用到的OCI函数就是这些。其他的是高级高能。我们可以用这些函数来进行基本的编程。

转载于:https://www.cnblogs.com/matrix56/archive/2011/07/22/2114028.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值