科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道从Linux上的DB2表生成动态数据表单 (1)

从Linux上的DB2表生成动态数据表单 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本文中,为了动态构建视图和表单,我将检查 ® DB2® Universal Database™ (UDB) 元数据。特别是,我将使用 Linux 上的 ® Kylix 3™ 和 Borland dbExpress 数据访问驱动程序,来分析 DB2 UDB 数据库表、字段(名称和类型),以允许用户选择特定的表、

作者:yuansang 来源:赛迪网技术社区 2007年10月19日

关键字: Linux 操作系统 表单 DB2

  • 评论
  • 分享微博
  • 分享邮件
 

简介

在本文中,为了动态构建视图和表单,我将检查 ® DB2® Universal Database™ (UDB) 元数据。特别是,我将使用 Linux 上的 ® Kylix 3™ 和 Borland dbExpress 数据访问驱动程序,来分析 DB2 UDB 数据库表、字段(名称和类型),以允许用户选择特定的表、来回切换应该显示的字段,以及动态查看数据格和单独数据感知控件中的输出。

这是一种纯运行时方法;无需进行进一步编码。在后续文章中,我将使用 Borland Delphi™,通过动态生成表单,并在设计时将它们添加到项目中(用我们自己的数据库表单向导)来进一步介绍该方法。

从头开始

与前面介绍利用 Kylix 操作 DB2 的文章不同,在上一篇文章中,您已经在设计时使用 IDE 构建了整个应用程序,所以只需从连接 DB2 UDB 数据库开始即可。其他步骤都是在代码中完成的,都使用了从数据库自身中获得的元信息。

为了构建到 DB2 UDB SAMPLE 数据库的连接,需要使用 TSQLConnection 组件、开启新的 Kylix 3 项目,并将 TSQLConnection 组件放在表单上。可以右击 SQLConnection 组件来编辑连接属性。DriverName 应该是 DB2,Database 名称应该是 SAMPLE(或者其他任何数据库名 —— 本文中的代码将处理所有现有 DB2 UDB 数据库)。还需要指定 User_Name 和 Password;此外,需要在运行时将它们输入登录对话框中。可以通过单击“check”按钮来测试连接属性的有效性,随后,可以看见以下截屏:

  

图 1. 成功连接的 DB2Connection

设计时的准备

一旦正确设置了 TSQLConnection 组件,就可以添加其他 dbExpress 组件,并将它们彼此相连,但是,不需要指定 SQL 语句或添加任何视图数据感知控件。在添加第一个附加组件时,在表单上放置一个 TSQLDataSet 组件,添加下一个组件时放置 TSQLConnection 组件。将 TSQLDataSet 的 SQLConnection 属性指向 TSQLConnection 组件。然后,在表单上放置一个 TDataSetProvider,并将其 DataSet 属性指向 TSQLDataSet 组件。

该组件后面是 TClientDataSet 组件,其 ProviderName 属性被设置为 TDataSetProvider 组件的名称。最后,删除表单上的 TDataSource 组件,并将其 DataSet 属性连接到 TClientDataSet 组件。这将为您提供 TSQLConnection - TSQLDataSet - TSQLDataSetProvider - TClientDataSet - TDataSource 的链接,在使用包含 DB2 UDB 数据库表的 Borland dbExpress 之前,您可以看到该链接。

这次,主要的不同在于您不能在 SQLDataSet 组件内部指定 SQL 语句。也不能在表单上放置任何可视数据感知组件,因为所有这些操作都将在运行时动态完成,并且都是基于 DB2 UDB 数据库中发现的元数据以及用户对表和字段的选择。

为了将元数据信息和从动态视图中生成的选项与一个数据窗格以及一个数据控件分离,需要用到 TPageControl 组件,如下方截屏中所示:

  

图 2. 设计时的动态表单

Meta Data TabSheet 由左边的 TListBox 控件和右边的 TCheckListBox 控件组成,前者将用 DB2 UDB SAMPLE 数据库表中的表名进行填充,后者将用已选定表中的有效字段名进行填充。

Generate 按钮将准备并执行 SQL 语句,将由此产生的数据放入一个窗格中(在 Data Grid 选项卡上),或者放入单独的数据感知控件中(在 Data Controls 选项卡中)。

检索 TableNames

首先要做的事情是检索数据库中的可用表名。假定 SQLConnection 组件可以建立到 DB2 UDB 数据库的连接(在本例中,是 SAMPLE 数据库或其他任何数据库),您只能显式打开连接,然后,您可以调用 GetTableNames 方法。该方法期望将 TStrings 变量作为第一个参数。而不是声明并使用我们自己的 TStringList 作为第一个参数,您可以直接将结果分配给 ListBox 的 Items 属性,如下面代码片段所示:

  
  procedure TForm1.FormCreate(Sender: TObject);
  begin
  SQLConnection1.Connected := True;
  SQLConnection1.GetTableNames(ListBox1.Items, False);
  PageControl1.ActivePageIndex := 0
  end;
  

在创建表单时(即,在 OnCreate 事件处理程序中),执行该代码的结果是:当启动应用程序时,用所有可用表填充 TListBox 控件。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章