DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[1]

DELPHI基础教程:简单数据库应用的创建及MASTAPP介绍(一)[1],第1张

Delphi中嵌入的数据库应用开发工具如Database Form Expert具有很强大的功能 我们不需要编写任何程序代码便可以快速地创建一个简单的数据库应用程序 甚至还能创建基于多个数据库表的主要──明细型数据库应用程序

本章主要介绍用Delphi开发简单的数据库应用程序的一般方法和步骤 首先让读者对Delphi强劲的数据库应用开发工具有一个直观的印象 然后在此基础上进行复杂的数据库应用程序的设计 本章主要包括以下内容

● 创建数据库应用窗体

包括用Database Form Expert 或手工方式创建简单的无需编写程序代码的应用程序或者利用多个部件并编写功能复杂的程序代码创建主要──明细型数据库应用程序

● 在应用程序中控制字段有关的属性

描述怎样读写数据库表中字段的值和控制字段的显示格式等

本章所介绍的例子中用到的窗体 数据库表以及相关的文件都是在安装Delphi时缺省安装在C:\DELPHI\DEMOS\DB\MASTAPP目录中 并且用别名DBDEMOS表示这一子目录 在本章例子中 除特殊声明外 所有的TTable和 TQuery 部件的 DatabaseName 属性都设置为DBDEMOS

简单的基于单表的据库应用

用Decphi创建显示一个数据库表中的内容的应用非常简单和方便 只需要三个部件 只要将这三个部件通过相关的属性相互联系起来 不需要编写任何程序代码便可以实现 例如 用户想查看数据库表Customer DB中的内容时 可以按下面步骤来实现

选择相关的部件

选择菜单Project/New开始一个新工程 并修改Form 的Caption属性为CustomerFrom 并把Name属性设置为CustomerForm 然后从部件选择板上的Data Access 页上选取一个Datasounce部件和一个Table部件放到窗体的左上角 它们是非可见的部件 在窗体中我们看到的只是部件的图标 从Data Control页上选取DBGrid部件放到窗体中前两个部件的下面 完成这些工作之后 窗体如图 所示

图在CustomerFrom 窗体中放置三个部件

设置部件的属性

为了使TDBGrid部件能够显示数据库表Customer DB中的客户信息 我们必须修改窗体三个部件相关的属性 这些属性的设置如表 所示

表 CustomerFrom 窗体中三个部件的属性设置

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

属 性 属 性 值

──────────────────────────────

DataSource AutoEdit False

DataSource DataSet Table

Table DatabaseName DBDEMOS

Table TableName CUSTOMER DB

Table Active True

DBGrid DataSource DataSource

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

这里要注意的是 DBDEMOS是Delphi缺省安装时C:\Delphi\DEMO\DB\MASTAPP目录的别名 而且数据库表Customer DB存在该目录下 用户在使用这一例子时 请注意这两项设置都是正确的 另外 Datasource Dataset Table TableName和DBGrid Datasource属性都有下拉式列表框允许用户从可能的值列表中选择它们的值 这样能方便我们进行属性的设置 而且不容易出错

Datasouuce AutoEdit属性设置为False是为了防止用户修改数据库表中的数据 在下面的讨论中我们将详细地进行说明

Table Active设置为True时 Delphi会打开Table TableName所指定的数据库表 如果这个数据库表不存在(或表中什么也没有 即空表) Delphi 会d出出错信息并且Table Active变成False 当Table Active被设置成True之后 Table 部件的一些属性就不能再修改了 如Table DatabaseName和Table Tablename属性 若要修改它们 必须首先要将Table Active属性设置为False 然后再进行修改 否则 Delphi会d出错误信息 Cannot perform this operation on an open database 当看到这个错误信息时 只需把Table Active置成False 完成相关的修改后 再把 Table Active 属性设置为True

当我们把DBGrid DataSource的值设置成DataSource 时 Delphi会把Customer DB中的数据填充到DBGrid 部件中 并且可以用DBGrid 中的滚动条来浏览数据库表中的所有记录

运行程序

保存文件 命名代码单元为Cust pas 命名工程名为CustPRJ DPR 然后按F 编译并运行程序 程序执行之后 我们可以使用滚动条或键盘移动键在字段和记录间移动 但不能修改表中的数据 因为Datasouc AutoEdit 属性已被设置为False

Cust程序中的三个部件都有各自的特殊用途 三个部件的相关属性在内部相互联系生成最终的应用程序 TTable部件连接磁盘上的实际数据库表和应用程序中其他部件的通道 TTable部件具有打开和关闭 读取 更新以及其他处理磁盘数据库文件的方法

TDatasource部件是连接TTable部件和数据浏览部件如TDBGrid部件的桥梁 TDBGrid部件用于显示数据库表中的数据信息 它为应用程序提供一个直观的界面 图 阐述了这三个部件之间的关系

Cust程序中三个部件之间的内部关系

TDBGrid 部件的奇妙之处在于它知道如何去获取数据库表中的下一条或前一条记录 我们使用滚动条或箭头键便可以完成这项任务 TDBGrid部件不知道如何增加 删除和修改记录 如果想让 Cust 程序能够修改数据库表中的记录 只要把 Datasource 部件的AutoEdit属性设置成True 并重新编译和运行程序就可以达到目的 使用箭头键 把DBGrid的高亮度条定位到某一个字段上 然后键入新值 该字段中的值将被键入的新值所取代 并且当移动到另一条记录时 健入的信息会自动写入数据库表中 如果想放弃所做的改动 只需在离开该字段前按一下Escape键

如果想在表中增加新记录 可以把高亮度条移到网格底端的空白记录上并输入新记录的有关字段值 也可以在用户指定的某一条记录的后面插入一条新记录 只要把高亮度条定位到指定的记录上 按Ins键 使可以在该记录的后面插入新记录

删除某一条记录时 把高亮度条定位在想删除的记录的任何字段上 按Ctrl+ del键 这时会出现保护信息 我们可以确认是否真的想删除该项记录

TDBGrid为用户提供了较完备的功能 用于控制是否编辑 增加或删除记录 若想禁止对数据库表作任何修改 设置TDBGrid部件的Readonly属性为 True 并设置 Option dgEDiting为False(这将为我们提供一个只读的数据库表浏览器而不是数据库编辑器 但它隐含着增加 编辑和删除记录的能力) TDBGrid部件的这些属性和Option属性其它选项的各种不同组合可以让我们很方便地对数据库表进行有效的浏览 编辑等 *** 作

如果我们经常使用像电子表格那样的界面来显示和编辑数据记录 TDBGrid 部件便是一个很方便的工具 但那并不是最友好的用户界面 如果想拥有更优美更直观的界面 我们还可以使用单独的数据浏览部件来显示数据库表中各个字段的值 并利用TDBNavigator部件控制对数据库表的存取

lishixinzhi/Article/program/Delphi/201311/25173

静态方式是把SQL命令文作为TQuery部件的SQL属性值进行设置 这样 当执行应用程序时 Delphi便执行TQuery部件SQL属性中设置的SQL命令 如果是SQL中的查询命令 把TQuery部件通过TDataSource部件与数据控制部件相连 查询的结果将会显示在与 TQuery部件相连接的数据浏览部件中 动态SQL语句是指SQL语句中包含一些参数变量 在程序中可以为这些参数赋值 在程序运行过程中 各个参数值是变化的 TQuery部件的SQL 属性中的SQL语句的编写也有两种方法 一种方法是在程序设置阶段便将相应的SQL语句写入到TQuery的SQL属性中 另一种方法是在Delphi开发的应用程序将SQL语句 包含在Pascal代码单元中

在SQL编程中使用TQuery部件的具体方法步骤如下

①为TQuery部件设置DatabaseName属性 它可以是用BDE建立的数据库的别名 或桌面数据库系统中的目录名或数据库服务器中的文件名 如果在应用中使用了TDatabase 部件 那么TQuery部件的DatabaseName属性可以是TDatabase部件中定义的一个数据库别名 详细情况请参看 TDatabase部件的使用

②为TQuery部件设置SQL属性 TQuery部件的SQL属性值就是应用程序要执行的SQL 命令文本 设置SQL属性有两种方法

● 在程序设计过程中 我们可以通过对象浏览器(Object Inspector)编辑SQL属性在Object Inspector中选择SQL属性 这样会打开String List Editor窗口 在其中我们便可以编写SQL命令 我还可以打开Visual Query Builder来编写SQL命令 (只有Delphi的客户/服务器版本才具有这一工具)

● 将SQL命令包含在Pascal代码单元中

在程序运行过程中 首先调用TQuery部件的Close方法关闭当前的TQuery部件 然后调用Clear方法清除SQL属性 并说明新的SQL命令文本 然后调用Add方法 将新的SQL命令文本加入到SQL属性中

③通过调用TQuery部件的Open方法或ExecSQl方法执行 SQL 命令 Open 方法只执行Select命令 ExecSQL方法还可以执行其它的SQL命令 Open方法和ExecSQL 方法的区别我们在后面的章节里会进一步地加以讨论的

如果使用动态SQL语句 首先调用prepare方法 给动态SQL语句中的参数赋值 然后再调用Open方法或ExecSQL方法 调用propare 方法并不是必须的 但是对于要多次执行TQuery部件中SQL属性中的动态SQL语句 调用Prepare可以大大提高TQuery部件执行SQL语句的性能

在TQuery部件中编写简单的SQL查询命令

在这一节里我们将学习如何使用TQuery部件编写简单的SQL查询命令 并在Delphi 应用程序中实现SQL查询

例如 如果我们想查询出表Customer DB中客户的编号和公司名称 我们按下列步骤来实现

①在应用窗体中放置一个TQuery部件 一个TDataSource部件一个TDataGrid部件 并将它们连接起来

②设置窗体TQuery 部件Query 的DatabaseName属性值为DBDEMOS

③双击Object Inspector窗口中Query 的SQL 属性 Delphi 将显示 String List Editor窗口

④在图 中的窗口中输入SQL语句

Select CustNo Company From Custormer

⑤单击OK按钮 关闭String List Editor窗口

⑥设置Query的Open属性为True

SQL语言编程概述

在Delphi应用程序中的SQL命令语句是包含在TQuery部件的SQL属性中 TQuery部件的SQL属性是TString类型的 也就是说SQL属性值是一个字符串列表 这个字符串列表非常类似于一个字符串类型的数组 有关TString类型的信息请参看联机帮助 在前一节里我们介绍了TQuery部件可以执行两种SQL语句

● 静态SQL语句

● 动态SQL语句

静态SQL语句在程序设计时便已固定下来 它不包含任何参数和变量 例如下面的语句便是一条静态SQL语句

Select * From Cusromer Where CustNo =

而动态SQL语句 也被称作参数化的语句 在其中间包含着表示字段名或表名的参数 例如下面的语句是一条动态SQL语句

Select * From Customer Where CustNo =: Number

其中的变量Number便是一个参数变量 它由一个冒号引导 在程序运行过程中 必须要为该参数赋值 该条SQL语句才能正确执行 每次运行应用程序时可以为该参数变量赋予不同的值

    SQL命令文本的编写

使用String List Editor编写

我们要为TQuery部件的SQL属性设置SQL命令文本时 可以在应用窗体中选择TQuery部件且双击Object Inspector窗口中的SQL属性 这样便打开了String List Editor 窗口 在该窗口中我们便可以编写各种SQL命令 如图 所示

在编写完适当的SQL语句之后 选择 OK 按钮便可以将编辑器中的 SQL 命令文装入到TQuery部件的SQL属性中 选择SAVE按钮可以将编写好的SQL命令保存到一个文件中供以后编程时使用 我们在编写SQL命令文本时还可以选择Load按钮从一个 SQL 命令文件中调入SQL命令 在程序运行过程中 要想设置TQuery部件的SQL属性 必须首先调用Close方法 关闭TQuery部件 然后再调用Clear方法清除SQL属性中现存的SQL命令语句 最后再调用Add方法为SQL属性设置新的SQL命令语句 例如

Query Close {关闭Query )

Query SQL Clear {清除SQL属性中的SQL命令语句}

Query SQL Add( Select * From Country )

Query SQL Add( Where Name = ARGENTINA )

在为TQuery部件设置SQL属性时调用Close方法总是很安全的 如果TQuery部件已经被关闭了 调用Close方法时不会产生任何影响 在应用程序中为SQL属性设置新的SQL 命令语句时 必须要调用Clear方法以清除SQL属性中现存的SQL命令语句 如果不调用Clear方法 便调用Add方法向SQL属性中设置SQL命令语句 那么新设置的SQL命令语句会追加在现存SQL命令语句后面 在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去

在这里要特别注意的 一般情况下TQuery部件的SQL属性只能包含一条完整的SQL语句 它不允许被设置成多条SQL语句 当然有些数据库服务器也支持在TQuery部件的SQL属性中设置多条SQL语句 只要数据库服务器允许这样 我们在编程时可以为 SQL 属性设置多条SQL语句

lishixinzhi/Article/program/Delphi/201311/25145


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11160057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存