欢迎来到天天文库
浏览记录
ID:14319818
大小:67.37 KB
页数:19页
时间:2018-07-27
《db2数据库 cli应用开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、DB29应用开发CLI/ODBC编程简介 什么是CLI/ODBC? 结构化查询语言(StructuredQueryLanguage,SQL)是用于操纵数据库对象和它们包含的数据的一种标准语言。但是,由于SQL没有过程语言的性质,因此,通常是将高级编程语言的决策和顺序控制与SQL的数据存储、操纵和检索功能相结合来开发数据库应用程序。有一些方法可以将SQL与高级编程语言相结合,但最简单的方法是将SQL语句直接嵌入到用于创建应用程序的高级编程语言源代码文件中。这种技术被成为嵌入式SQL编程。嵌入式SQL编程最大的缺
2、点是所开发的应用程序缺乏互操作性。用嵌入式SQL为DB2开发的应用程序如果要与其他关系数据库管理系统(RDBMS)交互,必须进行修改(在某些情况下,甚至要完全重写)。由于不论为何种RDBMS编写的嵌入式SQL应用程序中都存在这样的限制,因此在20世纪90年代初,X/Open公司和SQLAccessGroup(SAG,现在属于X/Open)就为可调用SQL接口联合开发了一种标准的规范。这种接口被称为X/OpenCLI。大部分X/OpenCLI规范后来都被接受为ISOCLI国际标准的一部分。X/OpenCLI的主要目
3、的是通过允许数据库应用程序独立于任何一种数据库管理系统的编程接口,增加数据库应用程序的可移植性。在1992,Microsoft为MicrosoftWindows操作系统开发了一个名为OpenDatabaseConnectivity(ODBC)的可调用SQL接口。ODBC基于X/OpenCLI标准规范,它提供了X/OpenCLI没有提供的扩展功能和能力。ODBC位于一个操作环境之上,在此环境中,一个名为ODBCDriverManager的组件在应用程序运行时动态地装载特定于数据源的ODBC驱动程序。每个特定于数据源
4、的驱动程序负责实现ODBC规范中定义的一种或全部功能,并提供与该驱动程序所针对的特定数据源的交互。ODBCDriverManager提供了一个集中控制点;当一个ODBC应用程序执行时,发出的每个ODBC函数调用被发送到ODBCDriverManager,并从那里转发到适当的数据源驱动程序进行处理。通过驱动程序,可以将应用程序直接链接到一个ODBC驱动程序库,而不必链接到每种特定于产品的数据库本身。 DB2CallLevelInterface(DB2CLI)基于ISOCLI国际标准,它提供了ODBC规范中给出的大
5、部分功能。使用DB2CLI而不是ODBC的应用程序直接链接到DB2CLI加载库,任何ODBCDriverManager都可以加载这个库作为一个ODBC驱动程序。DB2UDB应用程序还可以独立地使用DB2CLI装载库。但是,当以这种方式使用这个库时,应用程序本身不能与其他数据源通信。 嵌入式SQL与CLI/ODBC的区别 在本系列的第四篇教程中可以看到,嵌入式SQL应用程序是通过直接将SQL语句嵌入到使用高级编程语言编写的一个或多个源代码文件中而构建的。而CLI/ODBC应用程序则依赖于一组标准的应用程序编程接
6、口(API)函数将SQL语句发送到DB2DatabaseManager进行处理。嵌入式SQL应用程序和CLI/ODBC应用程序在以下方面也有不同之处: CLI/ODBC应用程序不需要显式地声明和使用主机变量;可以使用任何变量来发送数据或者从一个数据源检索数据。 CLI/ODBC应用程序不必显式地声明游标。相反,每当执行SQLExecute()函数或SQLExecDirect()函数(稍后会更详细讨论这两个函数)时,会根据需要自动生成游标。 在CLI/ODBC应用程序中,不需要显式地打开游标;当生成游标时,会
7、自动打开游标。 CLI/ODBC函数使用句柄管理环境、连接和与SQL语句相关的信息。这种技术便于将那些信息当作抽象对象来对待。通过使用句柄,CLI/ODBC应用程序就不必使用特定于数据库产品的数据结构,例如DB2SQLCommunicationsArea(SQLCA)和SQLDescriptorArea(SQLDA)数据结构。 CLI/ODBC应用程序天生就具有建立到多个数据源或同一个数据源的多个连接的能力。(嵌入式SQL应用程序只有在使用Type2连接的情况下,才能一次连接到多个数据源。) 嵌入式SQL应
8、用程序和CLI/ODBC应用程序虽然有这么多不同之处,但是它们在概念上也有一个重要的共同点:CLI/ODBC应用程序可以执行任何能在嵌入式SQL应用程序中动态准备的任何SQL语句。这一点是有保障的,因为CLI/ODBC应用程序将所有的SQL语句直接传递到数据源,以便动态执行这些语句。(CLI/ODBC应用程序还可以执行一些不能动态准备的SQL语句,例如复合SQL语句,但是
此文档下载收益归作者所有