Bob Swart
Bob Swart Training & Consultancy
2003 年 10 月 本文展示了如何使用 Borland C#Builder Enterprise 和用于 .NET 的 Borland 数据提供程序(Borland Data Provider,BDP)来连接到 DB2 SAMPLE 数据库。它展示了如何以快速应用开发(Rapid Application Development,RAD)的方式在设计时使用四个用于 .NET 的 BDP 组件中的三个组件(BdpConnection、BdpDataAdapter 和 BdpCommand)。
简介
在本文中,我将转向 Microsoft ®.NET 领域,使用 Borland ®C#Builder TM企业版和用于 .NET 的 Borland 数据提供程序(Borland Data Provider,BDP)连接到 DB2 SAMPLE 数据库。尤其是,我将演示如何以快速应用开发(Rapid Application Development,RAD)方法在设计时使用四个用于 .NET 的 BDP 组件中的三个(BdpConnection、BdpDataAdapter 和 BdpCommand)。C#Builder 企业版中用于 .NET 的 BDP 可以连接到 IBM DB2 ®Universal Database TMV7.x 和 DB2 V8.1。在本文中,我使用了 DB2 通用数据库 V8.1 个人版的最新版本。
开发 C#Builder 应用程序
Borland C#Builder 可以生成在 .NET Framework V1.1 上运行的 C# 应用程序。尽管 C#Builder 支持 ADO.NET,但是为了获得高性能的数据库访问,请使用 BDP,它实现 .NET 提供程序接口。
启动 C#Builder,然后执行 File >New >C# Application 以开始一个新的 C# 工程。执行该操作后将出现一个对话框,可以在其中指定新的应用程序名称,以及放置工程文件的位置。缺省情况下,是 C:\\Documents and Settings\\<user>\\My Documents\\Borland Studio Projects\\<projectname> 目录。我已指定 DB2BDS 作为工程名,C#Builder 会自动建议将工程文件放在我个人的 DB2BDS 工程目录中。
使用用于 .NET 的 Borland 数据提供程序
一旦创建了工程,请转到 Tool Palette,打开 Categories组合框并选择 Borland Data Provider类别(请参阅下面的 图 1)。这将显示四个 BDP 组件:BdpConnection、BdpCommand、BdpDataAdapter 和 BdpCommandBuilder。BdpConnection 用于构建到 DBMS 的连接,BdpDataAdapter 可用于自动构建连接和命令,而 BdpCommand 用于对数据库运行 SQL 命令,BdpCommandBuilder 可用于构造更新、插入和删除命令。所有 BDP 组件都有专门的设计程序,它们有助于 C#Builder 开发人员在设计时构建连接和命令等。
在本文中,我将向您展示一种简单的方法来使用这些组件连接到 DB2 V8.1 SAMPLE 数据库,并显示表中的一些数据,在下一篇文章中,我将进行略微深入的研究,并向您展示幕后正在发生的情况(包括 ADO.NET 的详细信息)以及如何才能充分使用 BDP(包括部署的详细信息)。
使用 BdpConnection 连接到 DB2 UDB
要构建到 DB2 V8.1 SAMPLE 数据库的连接,需要从 BdpConnection 组件着手。请注意,当您在 WinForm 上放下 BdpConnection 组件(名为 bdpConnection1)时,该组件不会显示在实际的 WinForm 本身中,而是将自动被放置在设计程序的底部,那里有一个区域是专门为非可视组件保留的(请参阅 图 1)。实际上,正如您将看到的,BDP 的所有组件(和其它非可视组件)最终都将被放置在设计程序的这个特殊区域。这种设计特性的优点就是:WinForm 本身决不会由于可视组件与非可视组件混在一起而变得杂乱无章。
图 1. 带有新的 BdpConnection 组件的 C#Builder IDE
放下 bdpConnection1 后,如果单击它,则会在 Object Inspector 的底部出现一个链接(位于上 图 1的左下角),可使用该链接来启动 图 2的 Connection Editor:
图 2. Connection Editor
BDP: Connections Editor显示了四个已经准备好的示例连接,分别针对 Borland InterBase ®(IBConn1)、Oracle 9i(ORAConn1)、DB2(DB2Conn1)和 Microsoft SQL Server TM 2000(MSSConn1)。可以使用该对话框来编辑这四个示例连接的特定属性值,并将它们保存在外部文件 BDS\\1.0\\bin\\bdpConnections.xml 中。该文件包含四个不同的提供程序(InterBase、Oracle、DB2 和 MSSQL)以及不同连接的定义。
在本例中,只与 DB2 连接有关。您可以编辑 DB2Conn1 示例连接,并输入您自己的 Database、UserName 和 Password 值。但是,由于可能会使用多个 DB2 数据库,因此我通常会为打算连接的每个数据库都创建一个新连接(该连接也将保存在 bdpConnections.xml 文件中)。为了创建新的 DB2 SAMPLE 数据库的连接,请单击 Add按钮。
图 3. Add New Connection
这将显示一个小型对话框(请参阅 图 3),可以在其中选择 Provider Name(也取自 bdpConnections.xml 文件)。C#Builder 专业版允许在 InterBase 和 MS SQL Server(MSDE)之间进行选择,而 C#Builder 企业版(或更高版本)向该列表添加了 Oracle 和 DB2。在本例中,您必须选择 DB2 作为 Provider Name,可以为 Connection 指定一个新的名称(如 DB2SAMPLE),以表明这是到 DB2 SAMPLE 数据库的连接。
必须指定 SAMPLE 作为 Database 的名称,指定您的 DB2 用户作为 UserName,并且指定相应的密码作为 Password 的值。请注意 图 4 中的 Assembly 指向 Borland.Data.Db2.dll 。
图 4. Connections Editor(重复)
指定了所有连接属性值之后,可以单击 Test按钮来测试到 DB2 SAMPLE 数据库的连接。如果您正确输入了所有值,那么将出现一个带有“Connection Successful”消息的 BDP 对话框。
图 5. Connection Successful
倘若您想知道是否需要为您的应用程序部署 bdpConnections.xml 文件(因为该文件包含 DB2SAMPLE 连接属性值),回答是“否”。您不必这么做,因为 Connection Name 只是一个快捷方式,当您对现有的数据库(您已经拥有到该数据库的连接)构建新的应用程序时,它可以为您提供帮助。而连接属性是在 WinForm 的 InitializeComponent() 方法中赋给 BdpConnection 组件的,正如可以在下面看到的:
private void InitializeComponent()
{
this.bdpConnection1 =
new Borland.Data.Provider.BdpConnection();
//
// bdpConnection1
//
this.bdpConnection1.ConnectionOptions = "";
this.bdpConnection1.ConnectionString = "Provider=DB2;" +
"VendorClient=db2cli.dll;Database=SAMPLE;" +
"UserName=myuser;Password=********;" +
"Assembly=Borland.Data.Db2.dll;";
|
利用 Data Explorer 浏览数据库
既然已经定义了 DB2SAMPLE 连接,那么可以将 BdpDataAdapter 组件添加到 WinForm(或更确切地说是添加到位于 WinForm 下面的非可视设计区域),并使用 Data Adapter Configuration 对话框来生成 BdpCommand 和 DataSet。我下一次将详细介绍该内容,到那时我还将研究幕后正在发生的情况。但是,现在您将使用一种更为简单的方法来为您工作:Data Explorer。通过 View >Data Explorer可以启动这个功能强大的小型数据库浏览器(请参阅 图 6)。
图 6. Data Explorer
请注意 DB2 节点下的 DB2SAMPLE 连接(这是我们刚建立的新的 DB2 连接),它是唯一一个可以打开的有效连接,以便查看 DB2 SAMPLE 数据库的表、视图和存储过程(其它连接仍然包含该样本连接属性值)。
如果您希望在 WinForm 应用程序中使用 EMPLOYEE 表,那么最快速的构建方法就是从 Data Explorer 拖动 EMPLOYEE 表并将其放在 WinForm 上。这将自动使 C#Builder 设计程序创建您需要的 BDP 组件。特别地,拖放操作将把 BdpDataAdapter 和 BdpCommand 组件添加到 WinForm 的非可视设计程序区域。
您还无法看到数据本身,因为 WinForm 上还没有可视组件。等一下您将放下一个 DataGrid 组件,以查看 EMPLOYEE 表中的数据。但是我想先稍微详细地研究一下 BdpDataAdapter。
配置 BdpDataAdapter
选择 bdpDataAdapter1。在 Object Inspector下,可以看到两个链接:Configure Data Adapter 和 Generate Typed Dataset。如果您尚未将 EMPLOYEE 表拖动到 WinForm,那么配置数据适配器,并使用 BdpConnection 连接到 DB2 V8.1 SAMPLE 数据库也是一种方法。但是在本例中,您可以单击 Configure Data Adapter 链接,并查看 Data Adapter Configuration 对话框的设置(请参阅 图 7)。
Connection 值被设置成 bdpConnection1 组件,该组件是您自己放下的。在左边,可以看到可通过这个到 DB2 SAMPLE 数据库的连接访问的所有表。请注意,在我的情形中,表的前缀是 ADMINISTRATOR(恐怕这是因为我是以管理员身份安装了 DB2 和 C#Builder 的缘故)。列的列表框显示了选定表的所有字段,在 Select 备忘域中,您已经看到了由 BdpCommand 组件使用的 select 查询,当我们从 Data Explorer 将 EMPLOYEE 表拖到 WinForm 时,也已自动创建了该查询。
图 7. Data Adapter Configuration — Command
Data Adapter Configuration对话框的第二个选项卡可用来查看数据的预览。但是在可以看到数据之前,我们需要一个通用的 ADO.NET DataSet 组件。而该组件还未生成,不过我们可以使用 Data Adapter Configuration 对话框的 DataSet 选项卡来生成它。请参阅 图 8:
图 8. Data Adapter Configuration — DataSet
由于 WinForm 上没有 DataSet 组件,所以现在您只能选择创建新的 DataSet,并使用它作为 BdpCommand 组件中 Select 语句的结果。在指定了您希望使用新的 DataSet 组件之后,可以转到 Preview Data选项卡并单击 Refresh 按钮来查看数据的预览(如 图 9所示)。
图 9. Data Adapter Configuration — 预览数据
一旦您看到了预览数据,就可再次关闭 Data Adapter Configuration 对话框,并返回到 WinForm。
在 DataGrid 中查看实时数据
现在,选择 Tool Palette 的 Data Controls 类别,并将 DataGrid 组件放到 WinForm 上。DataGrid 将是空的,在可以连接它之前,首先必须激活 DataAdapter。因此,选择 BdpDataAdapter 组件,并在 Live Data 类别中将 Active 属性设置为 True。
现在,选择 DataGrid 组件,并在 Data 类别中将 DataSource 属性设置为 dataSet1(它是您使用 Data Adapter Configuration 对话框创建的),然后将 DataMember 属性设置为 Table1。
这将在设计时显示 DB2 SAMPLE 数据库中 EMPLOYEE 表的记录,如图 10 所示:
图 10. 设计时的 WinForm 和 DataGrid
如果研究一下该工程的源代码,您会发现最有意思的代码片段是 InitializeComponent 方法,其中创建并初始化了 BdpConnection、BdpCommand、BdpDataAdapter、DataSet 和 DataGrid 组件。(下一次我将详细研究该代码,以及扩展该代码的方法。)
图 11 显示了编译之后的应用程序,该应用程序是作为本机 .NET 应用程序运行的。
图 11. 运行时的 WinForm DataGrid
结束语
在本文中,我展示了 C#Builder 如何包含用于 .NET 的 Borland 数据提供程序,以便于您可以快速且轻松地构建到 DB2 UDB 数据库的连接,从而使 DB2 UDB 用于您的 .NET 应用程序。我展示了如何使用 BdpConnection 组件来构建到 DB2 数据库的连接,以及如何使用 Data Explorer 自动拖放并创建 BdpDataAdapter 和 BdpCommand 组件,它们使用 BdpConnection 将 SQL 命令发送到 DB2 数据库,并将结果数据放在本地 DataSet 中。最后一步是将 DataSet 绑定到 DataGrid 以获得可视效果。
下一次,我将研究用于 .NET 的 BDP 和特定的设计时编辑器,并将略微详细地研究如何将 Borland 数据提供程序与 ADO.NET 联系起来,还将介绍部署生成的 C#Builder 工程及 BDP 程序集的具体步骤。
关于作者
Bob Swart(也称为 Bob 博士 — www.drbob42.com)在他自己的公司 Bob Swart Training & Consultancy(eBob42)(位于荷兰 Helmond)的身份是作家、教员、顾问和 Web 管理员。Bob 编写了自己的 Delphi 培训教材,并且从 1993 年以来一直在 Delphi 和 Borland 开发者大会上发表演讲。Bob 已经撰写了数百篇文章,并且与别人合著了 Revolutionary Guide to Delphi 2、 Delphi 4 Unleashed、 C++Builder 4 Unleashed、 C++Builder 5 Developer's Guide、 KylixDeveloper's Guide、 Delphi 6 Developer's Guide和 C++Builder 6 Developer's Guide。 |
|