2004 年 3 月
本文的焦点是使用 C 和 Java 语言讨论工作站上的 DB2 UDB 应用程序开发的连通性。
简介
这是第四篇讨论连通性应用场景的文章,其中包括 IBM® DB2® Universal Database TM(UDB)for Linux, UNIX® and Windows® version 8(fixpak 4)、DB2 UDB for iSeries TM 5.2(从 2003 年 12 月起为维护级别)以及 DB2 UDB for z/OS® V8(本文撰写之时,DB2 UDB for z/OS version 8 尚未广泛发布。用于测试场景的是 DB2 for OS/390、z/OS v7 以及从 2003 年 12 月起为维护级别的 V8 beta 版。)。与该系列的 第 3 部分一样,本文使用的也是最新版本;不过文中介绍的方法也可能适用于其他的版本。
本文的焦点是使用 C 和 Java 语言的工作站应用程序开发的连通性。我们将提供使用 JDBC TM、SQLJ、ODBC 等在工作站平台(Linux、UNIX 以及 Windows)上开发的示例程序,其中每个程序都将连接到 DB2 UDB 数据库(任何平台),查询 SYSIBM.SYSDUMMY1 表以及断开连接。请务必使用拥有访问该表的正确权限的用户 ID 来运行这些程序。这些程序是在 Service Pack 4 级别的 Microsoft® Windows 2000 平台上测试的,但是应该也可以移植到 UNIX 和 Linux 平台上。由于篇幅限制,我们所提供的每个示例程序的代码清单只带有最少的注释和错误检查(不过功能仍然齐全)。要获得完整的实用示例程序,请下载本文附带的文件。
该系列的第五篇文章中将介绍 ADO 和 ADO.NET,而第六篇文章中还将介绍其他语言。我们不会讨论在 z/OS、OS/390 或 iSeries 中本地编写的程序。请注意,我们假定您已经具备了一些编程的背景知识;因此,我们不会介绍编程技巧,以及一般是如何编码的。
作为顾问,我们经常将示例程序放在手边,用以测试应用程序连通性的设置是否正确。本文中的示例程序也可以用于此目的。在 DB2 UDB for Linux、UNIX 和 Windows V8 中,您现在可以使用配置助手(Configuration Assistant,CA)来测试多种类型的连接。不过,从 DB2 UDB 的先前版本中也可得到这些示例程序。根据所提供的源代码,示例程序还提供了关于连通性设置的更多详细信息。
本文对于 DBA 应该也是有用的,即使他们通常都无需给程序编码。因为在与应用程序开发人员交流时,对于如何编写要连接和访问 DB2 数据库的程序有基本的理解将很有益。
本文中的程序是基于为其提供了 DB2 UDB 应用程序开发客户机(DB2 UDB Application Development client)的示例程序(在目录 sqllib/samples 下)的;然而为了便于理解,已将它们简化了。
本文将描述下列连通性的应用场景:
C/C++:
- 场景 1:使用 CLI 连接 DB2 UDB 数据库
- 场景 2:使用 ODBC 连接 DB2 UDB 数据库
- 场景 3:使用嵌入式 SQL 和宿主语言 C 连接 DB2 UDB 数据库
- 场景 4:使用 SUN type 1 驱动程序(JDBC - ODBC 桥)连接 DB2 UDB 数据库
- 场景 5:使用 IBM DB2 UDB type 2 驱动程序(App 驱动程序)连接 DB2 UDB 数据库
- 场景 6:使用 IBM DB2 UDB type 2 驱动程序(通用驱动程序)连接 DB2 UDB 数据库
- 场景 7:使用 IBM DB2 UDB type 3 驱动程序(网络驱动程序)连接 DB2 UDB 数据库
- 场景 8:使用 IBM DB2 UDB type 4 驱动程序(通用驱动程序)连接 DB2 UDB 数据库
- 场景 9:使用 SQLJ 连接 DB2 UDB 数据库
假定所使用的协议为 TCP/IP 协议,因为这是最常使用的协议。我们只列出基本的设置信息。
请注意,我们描述的场景为两层环境。对于 n层环境,则只要将“machine 1”作为执行 C 或 Java 程序的系统来考虑。
下面描述的所有场景中,均在测试机器中设置了下列 Windows 2000 环境变量。其中大多数环境变量是在安装 DB2 UDB 时自动设置的。请注意,对于部分示例程序,我们使用 MS Visual Studio V6 进行编译,这在某些环境变量的值中得到了反映。而在 UNIX/Linux 平台中,某些变量名稍微有点不同。请务必根据您自身的环境,适当地设置这些变量:
表 1. 必需的 Windows 2000 环境变量
环境变量
值 CLASSPATH .;C:\\PROGRA~1\\SQLLIB\\java\\db2java.zip;C:\\PROGRA~1\\SQLLIB\\java\\db2jcc.jar;C:\\PROGRA~1\\SQLLIB\\java\\sqlj.zip;C:\\PROGRA~1\\SQLLIB\\bin;C:\\PROGRA~1\\SQLLIB\\java\\common.jar;C:\\PROGRA~1\\SQLLIB\\java\\db2jcc_license_cisuz.jar;C:\\PROGRA~1\\SQLLIB\\java\\db2jcc_license_cu.jar; INCLUDE C:\\PROGRA~1\\SQLLIB\\INCLUDE;C:\\PROGRA~1\\SQLLIB\\LIB LIB C:\\WINNT\\system32;C:\\Program Files\\Microsoft Visual Studio\\VC98\\mfc\\lib;C:\\Program Files\\Microsoft Visual Studio\\VC98\\lib;C:\\PROGRA~1\\SQLLIB\\LIB Path C:\\Program Files\\SQLLIB\\java\\jdk\\bin;C:\\PROGRA~1\\SQLLIB\\BIN;C:\\PROGRA~1\\SQLLIB\\FUNCTION;
场景 1 - 使用 CLI 连接 DB2 UDB 数据库(任何平台)
可通过下载(免费)任何一个 IBM DB2 UDB 客户机来获取 DB2 UDB CLI 驱动程序(还可用作 DB2 UDB ODBC 驱动程序)。
图 1. 从 DB2 UDB for Linux、UNIX 和 Windows CLI 应用程序客户机连接到 DB2 UDB 服务器(任何平台) 清单 1. dbconn_ODBC_CLI.c(带有最少注释且不含错误检查)
//******************************************************************** // SOURCE FILE NAME: dbconn_ODBC_CLI.c //******************************************************************** /* Standard C/C++ Headers */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* DB2 ODBC Header */ #include <sqlcli1.h> /* Main Program */int main(int argc, char** argv) { /* Handles */ SQLHENV henv = SQL_NULL_HENV; SQLHDBC hdbc = SQL_NULL_HDBC; SQLHSTMT hstmt= SQL_NULL_HSTMT; /* Local variables */ SQLRETURN rc; SQLCHAR statement[32761]; SQLCHAR mycolout[2]; SQLINTEGER mycoloutlen = 0; char dbname[8 + 1]; char user[18 + 1]; char pswd
上一篇教程: 如何在DB2上为AIX5L设置unixODBC
下一篇教程: 监控和估计






