- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统的访问.ppt
湖南工学院计算机系 第7章 数据库系统的访问 本章要点: 章主要对几种常见的数据库访问技术(如固有调用、ODBC、JDBC、OLE DB、DAO、ADO、ADO.NET以及基于XML的数据库访问等)进行介绍。 7.1 数据库的访问接口 所谓访问接口是指分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。 访问接口的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。 ⑴ 网络透明性 ⑵ 服务器透明性 ⑶ 语言透明性 应用系统访问数据库的接口方式有多种,本节介绍固有调用、ODBC和JDBC。 7.1.1 固有调用 每个数据库引擎都带有自己的包含用于访问数据库的APl函数的动态链接库DLL,应用程序可利用它存取和操纵数据库中的数据。如果应用程序直接调用这些动态链接库,就说它执行的是“固有调用”,因为该调用对于特定的数据库产品来说是“固有” (专用)的。 固有调用接口的优点是执行效率高,由于是“固有”,编程实现较简单。但它的缺点也是很严重的:不具通用性。 7.1.2 ODBC ODBC是“开放数据库互连”(Open Database Connectivity)的简称。ODBC是Microsoft公司提出的、当前被业界广泛接受的应用程序通用编程接口(API)标准,它以X/Open和 ISO/IEC的调用级接口(CLI)规范为基础,用于对数据库的访问。我们可以用如下图示7-1来说明ODBC概念。 ODBC实际上是一个数据库访问函数库,使应用程序可以直接操纵数据库中的数据。 1. ODBC结构 ODBC结构由四个主要成分构成:应用程序、驱动程序管理器、驱动程序、数据源。其构成及体系结构说明如下: ⑴ 应用程序 ⑵ 驱动程序管理器(Driver Manager) ⑶ 驱动程序 ⑷ 数据源 其体系结构图如下图7-2所示: ODBC的API一致性级别分为三级:核心级、扩展1级和扩展2级。核心级包括最基本的功能,包括分配、释放环境句柄、数据库连接、执行SQL语句等,核心级函数能满足最基本的应用程序要求。扩展1级在核心级的基础上增加了一些函数,通过它们可以在应用程序中动态地了解表的模式,可用的概念模型类型及它们的名称等。扩展2级在扩展1级的基础上又增加了一些函数。通过它们可以了解到关于主关键字和外来关键字的信息、表和列的权限信息、数据库中的存储过程信息等,并且还有更强的游标和并发控制功能。 2. ODBC接口函数按功能 ⑴ 分配和释放内存。 ⑵ 连接。 ⑶ 执行SQL语句。 ⑷ 接收结果。 ⑸ 事务控制。 ⑹ 错误处理和其他事项。 ODBC的基本流程控制是:初始化SQL处理终止。在初始化阶段分配环境,包括分配环境句柄、连接句柄和语句句柄,与服务器连接;在SQL处理阶段执行SQL语句和检索操作;在终止阶段释放语句句柄、环境句柄、连接句柄,与服务器断开。 具体用SQL语句来执行实现数据源的连接与断开代码片段如下 SQL语句的执行: main() { ASD asd; /*说明asd是一个环境型变量*/ LZJ lzj; /*说明lzj是一个连接型变量*/ JDK jdk; /*说明jdk是一个语句句柄变量*/ RETCODE retcode; /*说明retcode是一个返回变量*/ SQLAllocEnv( asd); /*分配一个环境句柄*/ SQLAllocConnect(asd,lzj); /*分配一个连接句柄*/ SQLConnect(lzj,学生,SQL_NTS,NULL,0,NULL,0);/*连接数据源*/ SQLAllocStmt(lzj, jdk); /*分配一个语句句柄*/ retcode=SQLExecDirect(jdk,SELECT * FROM S,SQL_NTS);/*执行语句*/ …… /*结果集处理*/ SQLDisconnect(lzj); /*断开数据源*/ SQLFreeStmt(jdk,SQL_DROP) /*释放一个语句句柄*/ SQLFreeConnect(lzj); /*释放一个连接句柄*/ SQLFreeEnv(asd); /*当应用完成后,释放环境句柄*/ } 4. 有准备地执行SQL语句的函数: ⑴ SQL语句预备函数 其格式如下:SQLPrepare(jdk,szSqlStr,cbSqlStr)。其中,参数hstmt是一个有效的语句句柄,参数szSqlStr和cbSqlStr分别表示将要执行的SQL语句的字符串及其长度。 ⑵ SQL语句执行函数 其格
文档评论(0)