没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论


















的 教程
这是使用 进行数据库编程系列的第一份教程。在如今的 界,数据库编程
变的越来越重要,所以我们不能再忽视它。但如今有很多种数据库在使用,如果我们为
了实现 下数据库汇编语言编程而学习各种数据库文件格式,所花时间大概称得上
“永恒”。
幸运的是, 的一项技术使得我们得以摆脱这个大麻烦。它被称为 ,是
开放式数据库互连()的缩写这是一族 与
相似。它主要与数据库打交道。就是说利用 你可通过统一界
面和好多各不同的数据库打交道。
是如何工作的它的结构式怎样的?在使用 之前,你应对它的结构有一个
清楚的了解。 有四个组成部分
应用程序 ,你的程序
管理器
驱动程序
数据源 数据库
这四个组件的核心是 管理器。 你可把它想象成你的监工。你告诉它你希望他作
什么,然后它把你的要求传达给它的工人驱动程序并完成工作。如果工人有什
么想告诉你的,它会与监工管理器说,由监工传达给你。工人们很明白他们应
作什么,因此他们会为你很好的完成工作。
通过这样的模式,我们并不与数据库驱动程序直接通信。你只需告诉数据库管理器你想
要做什么。而使用恰当的 驱动程序来实现你的目的则是 管理器的事。每个
驱动程序对于它所对应的数据库均有足够了解。各部件各司其职极大的简化了工
作量。
你的程序 管理器 驱动程序 数据库

管理器由 提供。看一下你的控制面板。如果你正确地安装了 你
会找到 数据源!" 位项目。 至于 驱动程序 随他们的产品提
供了好几种。并且你总可从数据库提供商那里获得新的 驱动程序。只要简单地安
装新的 驱动程序你的机器就可使用新的它以前不知道的数据库。
使用很简单但你需要知道一些关于 ! 和数据库的知识。例如字段"#$
主键%&'#&记录#列$(行等。我须假定你已知道数据库
理论的一些基础知识这样我才能讨论 下用汇编语言进行 编程的细节问
题。正如你所看到的管理器试图在你的程序里隐藏实现的细节。这意味着它必须
提供某些基本界面来与你的程序和 驱动程序进行通讯。 由于 驱动程序在
某些性能方面存在着差异因此必须存在一种方法以使得我们的程序能够知道某个
驱动程序是否支持某一特性。 定义了被称为 ##
$ 的三层服务界面。第三层是核心层。任何 驱动程序都要象在第一层和第
二层实现功能一样实现核心层表中的所有特性。从我们的程序的眼光来看
被分割为这样的三层。如果某个函数被标为核心的,就意味着你可放心使用而不必担心
它是否为你正使用的 驱动程序支持。如果它是一个第一层或第二层的函数你就得
确认 驱动程序是否支持,然后再使用。你可通过 ) 获得 的详细
资料。
在编写代码之前你应了解一些 的名词。
环境%*和字面意思一样是一个全局文本用来存取数据。如果你
熟悉 的话你可把它想象为一个 '%#。它包含应用于所有
# 的信息,例如一个 # 的 # 句柄。在用 之前你
必须从环境中获得这个句柄。
连接*指定 驱动程序和数据源数据库。你可以在同一环
境中同时连接不同的数据库
语句* 使用 ! 作为自己的语言。 因而只要简单的认为语
句就是你希望 执行的 ! 命令就行了。

以下是使用 编程的一般步骤
+* 连接数据源
* 创建并执行一条或多条 ! 语句
* 检查结果记录如果有的话
,* 断开数据源
在接下来的教程中我们来学习如何来实现这几步。
"&连接数据源
来源(-#$的 教程)
.资料 *&#/*#0*连接数据源
的 教程
本教程中,我们将学习使用 的细节*
因为我们的程序并不与 驱动程序直接通信,而是通过 管理器来定义一系列
供你的程序调用以完成工作,所以我们需要包含 1* 和 1*$1 文件,
当然还有 *。
连接数据源需要以下几步
+* 分配一个环境句柄'(*在进行每个 任务
#时仅需这样做一次*一旦获得了句柄我们就可修改环境属性来适合我们

的需要。你可以把这想象为在 工作中创建一个 '%#*
* 确认将使用的 的版本*你可在 *2 版和 *2 版间选择*他们在很多
方面存在不同,因此本步骤是必须的以使得 管理器它将用何种语法与用户
程序通讯,及如何解释用户程序的命令*
* 分配一个连接句柄*这个步骤可看作创建一个空连接*我们还没有指定使用那一个
驱动程序,连接那一个数据库*这些信息将在稍后来写入*
,* 建立一个连接&可通过调用 函数来建立连接*
当连接完成时,必须通过以下步骤来关闭和销毁它
+* 断开与数据源的连接*
* 释放连接句柄*
* 释放环境句柄 如果不再需要在这个环境中作更多连接
分配一个句柄
在 *2 版本以前我们需要调用很多独立的函数来分配环境、连接和语句句柄
)$%)$)$*而在 *2 中这些函
数被 )$*( 所代替,语法如下
)$+%,-+.)$*()$/$$.,*(,
)$*.$%*(
)$*.$%0*(1
2
看上去挺麻烦,简化一下看看:
)$*(*(,34+
*(34+
*(134+

)$+%,-+.被定义为 )$/$$., 类型*而 )$/$$., 被定义为短整型
例如一个字+31*所以该函数的返回值在 5 中而不是 5*这是很重要的*但是
下函数的参数是通过 位堆栈来传送的*即使这个参数只是一个字长+3 位,它
也应被扩展为 位*这就是为什么 *(, 被说明为双字而不是字
*看一下导入库 (!"&,)$*( 的入口是
6)$*(78"*就是说这个函数的参数的组合长度为 + 字节*然
而,这不是说 函数的原型不对*)$*( 会只用 *(, 的底位字
并忽略高位字*因此 函数原型是
功能上
(functionally)正确而我们的汇编函数原型反
映了实际*
结束了 ! 类型的讨论,我们来看一看函数的参数和返回值。*
*(,是一个常数,定义了希望分配的句柄类型*可能值如下
)$6*.$%6
%.9
环境句柄45#
/$#
)$6*.$%6
连接句柄#/$#
)$6*.$%6
,/,
语句句柄##/$#
)$6*.$%6
%
描述符句柄#%/$#
描述符是一个数据集合描述了一个 ! 语句的参数或一个结果集的列数视应用程序或
驱动程序而定。
*(是指向父6文本6的句柄*就是说如果你想分配一个连接句柄需
要通过一个环境句柄因为连接将在那个环境的文本中建立*如果你想分配一个环境
句柄这个参数必须为 )$6*.$%6.-$$注意 )$6*.$%6.-$$ 在
* 版本 +*+7 及其以前版本中被不正确的定义为 8!*你需要删除
剩余43页未读,继续阅读
资源评论


codefox
- 粉丝: 34
- 资源: 27
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
