OCI编程(一)

本文介绍了OCI程序的基本结构,包括初始化环境、分配句柄与建立连接、数据交换与处理等步骤,且复杂功能程序步骤更多。还阐述了OCI程序的数据结构,如句柄和描述字,介绍了多种OCI句柄类型及其相关信息。
------OCI程序的基本结构 OCI程序包括以下几个组成部分: 1.初始化OCI编程环境与线程 2.分配必要的句柄(handle)与数据结构,建立与服务器的连接与用户会话 3.通过在数据库服务器上执行SQL语句与数据库服务器进行数据交换,并进行必要的数据处理 4.重复执行就绪语句或制定一个要执行的新语句 5.中止会话和服务器连接 6.释放句柄 这只是一个简单OCI程序的步骤,视程序的功能会有所变化。需要诸如操作多个会话,事务,使用objects这些复杂功能的OCI程序则需要更多的步骤。 -------OCI程序的数据结构 句柄和描述字属于OCI程序中定义的不透明的数据结构,可以通过特定分配操作直接分配,或一些OCI函数隐式分配。 句柄和描述字存储属于数据,连接或程序行为相关的信息。 几乎所有的OCI函数包含一个或多个句柄参数.句柄是一个指向OCI库分配的存储区的指针。一个句柄可以用来存放上下文或连接信息(如环境或服务上下文句柄).由于句柄是由链接库而不是应用程序来管理的,因此它可以简化编程。大多数OCI应用程序需要访问句柄中的存放的信息。利用OCIAtrrtGet()和OCIAtrrSet()这些获取或设置属性的OCI接口可以访问到这些信息。 以下为OCI句柄类型,依次为描述,C类型,句柄类型 OCI句柄类型 OCI environment handle OCIEnv OCI_HTYPE_ENV OCI error handle OCIError OCI_HTYPE_ERROR OCI service context handle OCISvcCtx OCI_HTYPE_SVCCTX OCI statement handle OCIStmt OCI_HTYPE_STMT OCI bind handle OCIBind OCI_HTYPE_BIND OCI define handle OCIDefine OCI_HTYPE_DEFINE OCI describe handle OCIDescribe OCI_HTYPE_DESCRIBE OCI server handle OCIServer OCI_HTYPE_SERVER OCI user session handle OCISession OCI_HTYPE_SESSION OCI transaction handle OCITrans OCI_HTYPE_TRANS OCI complex object retrieval (COR) handle OCIComplexObject OCI_HTYPE_COMPLEXOBJECT OCI thread handle OCIThreadHandle N/A OCI subscription handle OCISubscription OCI_HTYPE_SUBSCRIPTION OCI direct path context handle OCIDirPathCtx OCI_HTYPE_DIRPATH_CTX OCI direct path column array handle OCIDirPathColArray OCI_HTYPE_DIRPATH_COLUMN_ARRAY OCI direct path stream handle OCIDirPathStream OCI_HTYPE_DIRPATH_STREAM OCI process handle OCI_HTYPE_PROC
oci函数的详细介绍 和应用实例 OCI 连接过程比较复杂,除了分配设置各个基本句柄外,还要明确彼此之间的联系,大致流程如下: 创建环境句柄: OCIEnvCreate(&envhp;, …); 创建一个指定环境的错误句柄: OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp;,…); 创建一个指定环境的服务器句柄: OCIHandleAlloc((dvoid *)envhp, (dvoid **)&servhp;,…); 建立到数据源的访问路径 : OCIServerAttach(servhpp, errhpp,…); 创建一个指定环境的服务上下文句柄: (void) OCIHandleAlloc((dvoid *)envhpp,…); 为指定的句柄及描述符设置特定的属性: (void) OCIAttrSet((dvoid *)svchpp,…); 创建一个指定环境的用户连接句柄: (void) OCIHandleAlloc((dvoid *)envhpp,…); 为用户连接句柄设置登录名及密码: (void) OCIAttrSet((dvoid *)usrhpp,…); 认证用户建立一个会话连接: OCISessionBegin(svchpp, errhpp,…); 创建一个句子句柄: OCIHandleAlloc((dvoid *)envhpp,…);s 准备 SQL 语句: OCIStmtPrepare(stmthpp, errhpp,…); 绑定输入变量: OCIBindByPos(stmtp &hBind;, errhp,…); 绑定输出变量: OCIDefineByPos(stmthpp, &bhp1;, errhpp,…); 获得 SQL 语句类型: OCIAttrGet ((dvoid *)stmthpp, (ub4)OCI_HTYPE_STMT,…); 执行 SQL 语句: OCIStmtExecute(svchpp, stmthpp,…); 释放一个会话: OCISessionEnd(); 删除到数据源的访问 : OCIServerDetach(servhpp, errhpp, OCI_DEFAULT); 释放句柄: OCIHandleFree((dvoid *) stmthpp, OCI_HTYPE_STMT);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值