- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle_OCI(Oracle_Call_Interface)官方文档翻译
OCI 学习资料
--Oracle8 及以后版本的OCI
1. 简介
Oracle 调用接口(Oracle Call Interface)是一个让我们通过函数调用来访问Oracle 数据库和
控制SQL 语句执行各个阶段的应用程序编程接口(API) 。OCI 支持C 和C++ 的数据类型、调用
惯例、语法和语义。
1.1 创建一个OCI 应用程序
我们编译和连接一个OCI 程序的方法与编译和连接一个非数据库应用程序的方法相同。
不需要独立的预处理或者预编译步骤。
1.2 OCI 的组成部分
OCI 具有如下功能:
·能够安全地支持大量用户的灵活的、多线程API 集合。
·为管理数据库访问、处理SQL 语句和管理Oracle 数据库对象的SQL 访问函数。
·管理Oracle 类型的数据属性的数据类型映射和操作函数。
·不经SQL 语句直接向数据库加载数据的数据加载函数。
1.3 封装的接口
所有的OCI 函数使用的数据结构都以被称为句柄的不透明的接口之形式封装。句柄是指
向OCI 库分配的保存着上下文信息、连接信息、错误信息或者关于SQL 及PL/SQL 的绑定信
息的不透明指针。客户端分配一定类型的句柄,通过已经定义好的接口来填充一个或者多个
句柄,并通过这些句柄向服务器发送请求。应用程序可以通过访问函数来访问句柄中包含的
相关信息。
2. OCI 基本编程
这部分介绍OCI 编程中涉及到的基本概念。
2.1 OCI 编程概要
一个OCI 应用程序的基本目标就是代表多个用户进行数据库操作。
OCI 使用以下基本编程顺序:
1. 初始化OCI 编程环境和线程。
2. 分配必要的句柄,并且设置服务器连接和用户会话。
3. 通过在服务器上执行SQL 语句来交换数据,并且执行必要的应用程序数据处理。
4. 执行准备好的语句或者准备即将要执行的语句。
5. 终止用户会话并且断开服务器连接。
6. 释放句柄。
图2-1 显示了一个OCI 应用程序的编程步骤。
图2-1
这幅图及其所列出的步骤提供了一个OCI 编程步骤的简单概括。根据程序的功能,变
化是完全可能发生的。包含管理多个会话、事务和使用对象的更复杂的OCI 应用程序需要
另外的步骤。
所有的OCI 函数调用都在一个环境中执行。在一个OCI 进程中可以有多个环境。如果
一个环境需要任何进程级别的初始化,则其自动进行。
注意:在一个OCI 应用程序中可以有多个活动连接和语句。
2.2 OCI 数据结构
句柄(Handles)和描述符(descriptors)是OCI 应用程序中定义的不透明的数据结构。它们可
以被直接分配、通过特殊的分配函数或者可以被OCI 函数隐式地分配。
7.X 升级注意:以前写过7.XOCI 应用程序的程序员必须熟悉这些被大多数 OCI 函数使
用的数据结构。
句柄和描述符保存有关数据、连接、或者应用程序行为的信息。
2.3 句柄
几乎每一个OCI 函数的参数列表中都包含有一个或者多个句柄。一个句柄是一个指向一
个 OCI 库分配的存储区域的不透明的指针。我们使用句柄来保存上下文信息或者连接信
息,(例如,一个环境或者服务句柄),或者它可以保存关于OCI 函数或者数据的信息(例如,
一个错误句柄或者描述句柄) 。句柄可以使编程更简单,因为 OCI 库会维持这些数据而不
是应用程序。
大多数 OCI 应用程序需要使用句柄中的信息。获取属性值和设置属性值的 OCI 函数,
OCIAttrGet()和OCIAttrSet(),获取和设置这些信息。
表 2-1 列出了 OCI 中定义的句柄。并列出了与每一种句柄类型相对应的C 数据类型和
OCI 函数中使用的用来识别OCI 调用中的句柄类型的句柄类型常量。
表2-1 OCI 句柄类型
分配和释放句柄
我们的应用程序要为一个特定的环境句柄分配所有的句柄(除了绑定句柄bind handle、
定义句柄define handle 和线程句柄thread handles) 。我们把环境句柄作为一个参数传递至
句柄分配函数。然
文档评论(0)