【IT168 服务器学院】尽管您可能是公司里最好的程序员,但事实上您还是要查阅编程手册,因为您无法记住所有这些编程API。别担心;不是只有您一个人有这个问题。如果您是中等水平的程序员,您可能有着非常繁忙的生活,忙于完成经理交给您的项目,即使他们已完全忘记了交给您什么事情!您开始怀疑您的工作与契约劳役有什么分别。
有时候,有些东西的设计意图是使您的生活稍稍轻松一些。当这些“东西”能够消除我们必须完成的乏味任务时,它们就特别有用。如果您是拿计时工资的,那么我们提前道歉;本文介绍的代码可以让您完成工作稍快一些。
如果有一个简单的、与平台无关的应用程序让您添加、删除和更新 DB2 数据库表中的行而不必临时去知道表名和列名,那难道不好吗?应用程序基本上会可视化地显示您正试图操作的表中的内容。知道吗?我们要您考虑这个问题。
我们这里讲述的SQL实用程序是一个让您能够以直观和易用的方式与IBM DB2 数据库进行交互的应用程序。这个实用程序是与平台无关的,因为它是用基于Java的技术开发的。您将在这个应用程序中看到的GUI是用 Java Swing 组件构建的,并且数据库访问层是用 IBM 提供的 JDBC 2.0 驱动程序构建的。应用程序是用 JDK 1.3.1_02 开发和测试的。
请记住这个简单的工具无法取代 IBM 提供和支持的完整功能的 DB2 Table Editor。我们的工具在功能和作用域方面有限得多,但我们认为它有助于满足某些用户的需要,更不用说它给我们提供了编码 DB2 Java 语言应用程序的有趣练习。
先决条件
JDBC 的能力使这个项目成为可能,JDBC 是通过 Java 编程语言让您与数据库交互的 API。既然提到了 Java,那么应该想到平台无关性的概念。因此,我们介绍的代码可以方便地移植到您选择的平台(AIX、Windows NT等等)。我们在 Windows 2000 环境中编码应用程序。然而,正如您将从使用的代码中看到的那样,我们没有使用与平台有关的技术(例如 ODBC、MFC 等等)。
但是,我们的代码有以下要求:
DB2 通用数据库版本 7.2(也称为带修订包 3 的版本 7.1)。
请确保类路径(classpath)中有用于 DB2 的 JDBC 2.0 驱动程序。这极为重要,因为我们要接入 JDBC 2.0 的一些功能。
此外,需要确保使用的 JDK 支持 Swing。我们使用了许多 Swing 提供的功能来完成一些界面,您将用它们与 DB2 数据库交互。
应用程序概述
如图 1 所示,SQLUtility 应用程序允许您用 IBM DB2 数据库完成四件事情:
● 查看表
● 向表添加行
● 从表删除行
● 更新表
![]() |
最好下载本项目的代码,然后仔细研究它以理解其工作原理。我们已经尽最大努力来注释代码以使您能理解我们所做的工作。我们建议使用一个类似于 IBM VisualAge? for Java 的集成开发环境(IDE),它允许您单步调试代码并掌握应用程序流。
对应用程序的仔细研究
用户在能够查看或更改数据库中的表之前必须得到授权。应用程序的登录阶段(由 LoginDialog.java 实现)验证用户是否得到授权。图 2 显示了您在首次访问该实用程序时会看到的认证对话框。
![]() |
当使用在认证对话框中输入的信息与指定的数据库成功地建立连接时,您就获得了授权。授权代码驻留在 SQLFacade.java 的构造函数中,其中用清单 1 中所示代码建立到数据库的 JDBC 连接。
清单 1. 连接到数据库
if (!username.equals("")){ connection =
DriverManager.getConnection(dbURL, username, password);}else{
connection = DriverManager.getConnection(dbURL);}
如果成功地建立了到指定数据库的连接,就会出现一个类似于图 3 中所示的屏幕。
![]() |
![]() |
创建下拉菜单的数据是用 DatabaseMetaData 对象(SQLFacade.java,第 122 行)获取的。
当从下拉菜单选择一个表并单击 Go 按钮时,实用程序会在一个用户友好的表格式视图(如图 5 中所示)中显示数据库表的内容。显示的第一列是行号,它让您方便地标识特定的数据行。使用 GUI,您可以在所选的表中添加行、删除行或对现有行加以更新。
![]() |
图 5. SQLUtility 显示 TEST 表的内容
添加行
要添加行,请单击 Add Row 按钮。通过 AddRowDialog.java 代码促进了向 DB2 表添加行的能力。单击 Add Row 按钮后,就出现一个带有两列的对话框(如图 6 中所示)。在这个界面中,第一列列出表的列名;第二列是输入数据库表每一列的值的位置。
![]() |
