GOOD.docx

上传人:b****2 文档编号:2247913 上传时间:2022-10-28 格式:DOCX 页数:20 大小:21.45KB
下载 相关 举报
GOOD.docx_第1页
第1页 / 共20页
GOOD.docx_第2页
第2页 / 共20页
GOOD.docx_第3页
第3页 / 共20页
GOOD.docx_第4页
第4页 / 共20页
GOOD.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

GOOD.docx

《GOOD.docx》由会员分享,可在线阅读,更多相关《GOOD.docx(20页珍藏版)》请在冰豆网上搜索。

GOOD.docx

GOOD

#include    

  typedef  short  int                    SWORD;  

  ...others  

  /*  SQL  portable  types  for  C  */  

  typedef  unsigned  char                UCHAR;  

  typedef  signed  char                  SCHAR;  

  typedef  SCHAR                          SQLSCHAR;  

  typedef  long  int                      SDWORD;  

  typedef  short  int                    SWORD;  

  typedef  unsigned  long  int          UDWORD;  

  typedef  unsigned  short  int        UWORD;  

  #ifndef  _WIN64  

  typedef  UDWORD                        SQLUINTEGER;  

  #endif  

  

  typedef  signed  long                  SLONG;  

  typedef  signed  short                SSHORT;  

  typedef  unsigned  long                ULONG;  

  typedef  unsigned  short              USHORT;  

  typedef  double                        SDOUBLE;  

一、OCI是什么?

OCI是一组底层的API(应用程序接口),主要和Oracle数据库进行交互。

你可以调用一些操作如logon,execute,parse,fecth等等。

OCI支持大数据语言,通常使用C/C++。

与OraclePro*C等不同,OCI不需要预编译。

OCI比Pro*C的一些优势:

 

 OCI的性能十分出色

 代码大量缩减

 对内置函数直接访问

 对LONG类型的分段操作(可以处理LONG相关的任何错误)

 Pro*C不能为绑定变量动态分配内存

 不能控制Pro*C自动生成的代码

OCI开发流程:

 连接多个数据库:

使用OCILogon(olog,olonororlon)

 打开游标:

oexec,oexn,ofen或者oftech

 执行相应SQL语句

 关于游标:

oclose

 断开连接:

ologoff

二、各个函数介绍:

1.创建OCI环境

swordOCIEnvCreate(  

OCIEnv**envhpp, //OCI环境句柄指针

ub4mode,       //初始化模式:

OCI_DEFAULT/OCI_THREADED等

CONSTdvoid*ctxp,

CONSTdvoid*(*malicfp)(dvoid*ctxp,size_tsize),

CONSTdvoid*(ralocfp)(dvoid*ctxp,dvoid*memptr,size_tnewsize),

CONSTvoid*(*mfreefp)(dvoid*ctxp,dvoid*memptr),

Size_txstramemsz,

Dvoid**usrmempp

2.申请/释放句柄

swordOCIHandleAlloc(

CONSTdvoid*parenth, //新申请句柄的父句柄,一般为OCI环境句柄

Dvoid**hndlpp,            //申请的新句柄 

Ub4type,type,             //句柄类型

Size_txtramem_sz,      //申请的内存数

Dvoid**usrmempp      //申请到的内存块指针

3.读取/设置句柄属性

swordOCIAttrSet(

dvoid*trgthndlp,     //需设置的句柄名

ub4 trghndltyp,      //句柄类型

dvoid*attributep,   //设置的属性名

ub4size,                 //属性值长度

ub4attrtype,          //属性类型

OCIError*errhp      //错误句柄

4.连接/断开服务器

  多用户方式连接:

sword OCIServerAttach(

OCIServer    *srvhp,//未初始化的服务器句柄

OCIError     *errhp,

CONSTtext   *dblink,//服务器SID

sb4          dblink_len,

ub4          mode//=OCI_DEFAULT,系统环境将设为阻塞方式

);

swordOCIServerDetach(

OCIServer  *srvhp,

OCIError   *errhp,

ub4        mode//OCI_DEFAULT

); 

单用户方式连接:

swordOCILogon(

OCIEnv         *envhp,

OCIError       *errhp,

OCISvcCtx      **svchp,

CONSTtext     *username,

ub4            uname_len,

CONSTtext     *password,

ub4            passwd_len,

CONSTtext     *dbname,

ub4            dbname_len 

);

swordOCILogoff( 

OCISvcCtx     *svchp

OCIError      *errhp 

);

5.开始/结束一个会话

先认证用户再建立一个会话连接

swordOCISessionBegin( 

OCISvcCtx    *svchp,   //服务环境句柄

OCIError     *errhp,

OCISession   *usrhp,  //用户会话句柄

ub4          credt,          //认证类型

ub4          mode          //操作模式

);

6.读取错误信息

swordOCIErrorGet(

dvoid     *hndlp,            //错误句柄

ub4       recordno,         /从那里读取错误记录,从1开始

text      *sqlstate,        //已取消,=NULL

sb4       *errcodep,      //错误号

text      *bufp,             //错误内容

ub4       bufsiz,            //bufp长度

ub4       type               //传递的错误句柄类型

=OCI_HTYPE_ERROR:

错误句柄

=OCI_HTYPE_ENV:

环境句柄

);

7.准备SQL语句

swordOCIStmtPrepare( 

OCIStmt      *stmtp, //语句句柄  

OCIError     *errhp,

CONSTtext   *stmt, //SQL语句

ub4          stmt_len,  //语句长度

ub4          language, //语句的语法格式=OCI_NTV_SYNTAX

ub4          mode        //=OCI_DEFAULT

);

8.绑定输入参数

swordOCIBindByName( 

OCIStmt      *stmtp,//语句句柄

OCIBind      **bindpp,//结合句柄,=NULL

OCIError     *errhp,

CONSTtext   *placeholder,//占位符名称

sb4          placeh_len,//占位符长度

dvoid        *valuep,//绑定的变量名

sb4          value_sz,//绑定的变量名长度

ub2          dty, //绑定的类型

dvoid        *indp,//指示符变量指针(sb2类型),单条绑定时为NULL,

ub2          *alenp,//说明执行前后被结合的数组变量中各元素数据实际的长度,单条绑定时为NULL

ub2          *rcodep,//列级返回码数据指针,单条绑定时为NULL

ub4          maxarr_len,//最多的记录数,如果是单条绑定,则为0

ub4          *curelep,//实际的记录数,单条绑定则为NULL

ub4          mode//=OCI_DEFAULT

); 

swordOCIBindByPos(OCIStmt     *stmtp, 

OCIBind     **bindpp,

OCIError    *errhp,

ub4         position,//绑定的位置

dvoid       *valuep,

sb4         value_sz,

ub2         dty,

dvoid       *indp,

ub2         *alenp,

ub2         *rcodep,

ub4         maxarr_len,

ub4         *curelep, 

ub4         mode

);

9.执行SQL语句

swordOCIStmtExecute( 

OCISvcCtx          *svchp, //服务环境句柄

OCIStmt            *stmtp, //语句句柄

OCIError           *errhp,

ub4                iters,//**

ub4                

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1