DB2开发基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DB2开发基础
在进行DB2应用开发之前,了解DB2应用程序的结构,掌握相关概念,设置开发环境是很必要的。本章主要介绍这几个方面的内容。
1.1 DB2应用程序开发概述
1.1.1 程序结构
DB2应用程序包括以下几个部分:
1. 声明和初始化变量
2. 连接到数据库
3. 执行一个或者多个事务
4. 与数据库断开连接
5.结束程序
一个事务是一组数据库操作,在提交给数据库之前,必须确认完全成功执行。在嵌入式SQL应用程序中,当应用程序成功地连接到一个数据库时,一个事务就自动开始了,结束于执行一条COMMIT语句或者ROLLBACK语句。同时,下一条SQL语句开始一个新的事务。
每一个应用程序的开始必须包括:
● 数据库管理器用来与宿主程序交互的所有变量和数据结构的声明
● 设置SQL通信区(SQLCA),提供错误处理的SQL语句
注意:用JAVA写的DB2应用程序在SQL语句出错时抛出一个SQLException 异常,需要在catch块里处理,而不是使用SQLCA。
每个应用程序的主体包括访问和管理数据的SQL语句。这些语句组成事务,事务必须包括下列语句:
● CONNECT语句,其建立一个与数据库服务器的连接
● 一条或多条:
▲数据操纵语句(例如,SELECT语句)
▲数据定义语句(例如,CREATE语句)
▲数据控制语句(例如,GRANT语句)
● COMMIT或者ROLLBACK语句结束事务
应用程序的结束通常包括释放程序与数据库服务器的连接和释放其他资源的SQL语句。
1.1.2 开发方法选择
可使用几种不同的程序设计接口来存取 DB2 数据库。您可以:
● 将静态和动态 SQL 语句嵌入应用程序。
● 在应用程序中编写“DB2 调用层接口”(DB2 CLI) 的函数调用,以调用动态 SQL 语句。
● 开发调用“Java 数据库链接”应用程序设计接口 (JDBC API) 的 Java 应用程序和小程序。
● 开发符合“数据存取对象(DAO) ”和“远程数据对象(RDO) ” 规范的Microsoft Visual Basic 和 Visual C++ 应用程序,以及使用“对象链接和嵌入数据库 (OLE DB) 桥接”的“ActiveX 数据对象”(ADO) 应用程序。
● 使用 IBM 或第三方工具如 Net.Data、Excel、Perl、“开放式数据库链接”(ODBC) 最终用户工具如 Lotus Approach 及其程序设计语言 LotusScript 来开发应用程序。
● 要执行备份和复原数据库等管理功能,应用程序可以使用 DB2 API。
应用程序存取 DB2 数据库的方式将取决于想要开发的应用程序类型。例如,如果想开发数据输入应用程序,可以选择将静态 SQL 语句嵌入应用程序。如果想开发在万维网 (WWW) 上执行查询的应用程序,可能要选择 Net.Data、Perl 或Java。
1.2相关概念
1.2.1 嵌入式SQL编程
嵌入式SQL应用程序就是将SQL语句嵌入某个宿主语言中,SQL语句提供数据库接口,宿主语言提供应用程序的其他执行功能。
“结构化查询语言”(SQL) 是一种数据库接口语言,它用来存取并处理 DB2 数据库中的数据。可以将 SQL 语句嵌入应用程序,使应用程序能执行 SQL 支持的任何任务,如检索或存储数据。通过使用 DB2,可以用 C/C++、COBOL、FORTRAN、Java (SQLJ) 以及 REXX 程序设计语言来编写嵌入式 SQL 应用程序。
嵌入了 SQL 语句的应用程序称为主程序。用于创建主程序的程序设计语言称为宿主语言。用这种方式定义程序和语言,是因为它们包含了 SQL 语句。
对于静态 SQL 语句,您在编译前就知道 SQL 语句类型以及表名和列名。唯一未知的是语句正搜索或更新的特定数据值。可以用宿主语言变量表示那些值。在
运行应用程序之前,要预编译、编译和捆绑静态 SQL 语句。静态 SQL 最好在变动不大的数据库上运行。否则,这些语句很快会过时。
相反,动态 SQL 语句是应用程序在运行期构建并执行的那些语句。一个提示最终用户输入 SQL 语句的关键部分(如要搜索的表和列的名称)的交互式应用程序是动态 SQL 一个很好的示例。应用程序在运行时构建 SQL 语句,然后提交这些语句进行处理。
可以编写只有静态 SQL 语句或只有动态 SQL 语句,或者兼有两者的应用程序。
一般来说,静态 SQL 语句最适合用于带有预定义事务的高性能应用程序。预订系统是这种应用程序一个很好的示例。
一般来说,动态 SQL 语句最适合于必须在运行期指定事务的、要快速更改数据库的应用程序。交互式查询界面是这种应用程序一个很好的示例。
将 SQL 语句嵌入应用程序时,必须按以下步骤预编译应用程序并将其与数据库捆绑:
1. 创建源文件,以包含带嵌入式 SQL 语句的程序。
2. 连接数据库,然后预编译每个源文件。
预编译程序将每个源文件中的 SQL 语句转换成对数据库管理程序的 DB2 运行期 API 调用。预编译程序还在数据库中生成一个存取程序包,并可选择生成一个捆绑文件(如果您指定要创建一个的话)。
存取程序包包含由 DB2 优化器为应用程序中的静态 SQL 语句选择的存取方案。这些存取方案包含数据库管理程序执行静态 SQL 语句所需的信息,以便该管
理程序可以用优化器确定的最有效的方式来执行这些语句。对于动态 SQL 语句,优化器在您运行应用程序时创建存取方案。
捆绑文件包含创建存取程序包所需要的 SQL 语句和其他数据。可以使用捆绑文件在以后重新捆绑应用程序,而不必首先预编译应用程序。重新捆绑创建针对当前数据库状态的优化存取方案。如果应用程序将存取与预编译时所用数据库不同的数据库,则必须重新捆绑应用程序。如果数据库统计信息自上次捆绑后已经更改,建议您重新捆绑应用程序。
3. 使用主语言编译程序编译修改的源文件(以及其他无 SQL 语句的文件)。
4. 将目标文件与 DB2 和主语言库连接,以生成一个可执行程序。
5. 如果在预编译时未对捆绑文件进行捆绑;或者准备存取不同数据库,则应对捆绑文件进行捆绑以创建存取程序包。
6. 运行该应用程序。此应用程序使用程序包中的存取方案存取数据库。
1.2.2 预编译
创建源文件之后,必须对每一个含有SQL语句的宿主语言文件用PREP命令进行预编译。预编译器将源文件中的SQL语句注释掉,对那些语句生成DB2运行时API调用。
在预编译一个应用之前,必须连接到一个数据库服务器,不论是自动连接还是显性连接。即使你在客户端工作站上预编译应用程序、预编译器在客户端产生的修改后源文件和信息,预编译器也需要使用服务器连接来执行一些确认任务。