版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、畜牧业专家咨询管理系统设计摘要:由于畜牧业生产发展滞后,产业结构不合理,农牧民观念落后,牲畜出栏率低,经济效益不明显, 靠天养畜等严重阻碍了畜牧业的发展。 新建生态 高效畜牧业养殖基地, 引进先进技术, 不仅可以推动畜牧业纵深发展, 而且可以 给投资者以丰厚的回报。 同时,设计开发畜牧专家咨询管理系统, 对相关信息进 行系统的管理,更好地为广大农牧民服务。该项目投资少,见效快。所以,项目 具有很高的开发潜力。家禽管理系统是典型的信息管理系统, 其开发主要包括后台数据库的建立和 维护以及前端应用程序的开发两个方面。 对于前者要求建立起数据一致性和完整 性强、数据安全性好的库。而对于后者则要求应用
2、程序功能完备,易使用等特点。因此要求结合开入式畜牧专家的要求, 对MS SQL Server2000数据库管理系 统、SQL语言原理、完成对家禽管理系统的需求分析、功能模块划分、数据库 模式分析,并由此设计了数据库结构和应用程序。第一章对数据库应用系统开发和家禽管理系统进行了简明的介绍, 并分析了 开发家禽管理系统所应进行的工作。第二章对数据库的设计和 SQL 语言的使用 进行了系统分析, 为深入理解数据库应用打下了基础。 第三章学习了具体的开发 工具 Delphi 7.0,对其数据库组件, SQL 语言在 Delphi 中的应用等数据库编程关 键技术进行了系统的介绍。 第四章分析了家禽管理信
3、息系统的应用需求, 按照数 据库设计理论的要求给出了系统需求说明书、局部ER图、全局ER图、系统关系模式,子模式,利用 MS SQL Server2000建立了数据库。第五章进行了具 体的程序设计, 具体划分了三类用户的操作权限, 设计了了三个操作界面。 实现 了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表 的连接操作, 实现了多条件查询和模糊查询, 并灵活实现了对不可更新查询结果 集的更新操作,实现了主从表操作,实现了密码维护功能,最后,系统还可以导 入数据库以对任意同结构的数据库进行操作设计充分利用 Delphi 7、 MS SQL Server2000数据库。关键
4、词:数据库,MS SQL Server,Delphi,数据库,家禽,管理目录1 前 言 41.1 数据库应用系统开发简介 41.1.1 数据库 41.1.2 数据库管理系统 51.1.3 创建数据库 61.2 畜牧业专家咨询管理系统 61.3 系统所做工作 62 数据库理论基础 72.1 数据库系统设计及范式分析 72.1.1 数据库系统设计 82.1.2 数据库设计范式分析 922SQL语言介绍92.2.1 SQL基础92.2.2 SQL语句103 应用系统开发工具 123.1 Delphi7.0 VCL组件的体系结构123.2 数据库组件介绍 133.3 SQL语言在Delphi中的应用
5、133.4 MS SQL Server 简述164 畜牧业专家咨询管理系统设计分析 174.1 需求分析 174.2 系统数据库设计 184.2.1 概念设计 184.2.2 关系数据库的逻辑设计 194.2.3 数据库的实现 195 畜牧业专家咨询管理系统应用程序设计 195.1 系统窗体模块组成 1 95.2 数据模块窗体的设置 205.3 启动画面的实现 205.4 用户登录窗体的的实现 215.5 用户密码认证窗体的的实现 215.6 咨询者服务模块的实现 215.6.1 畜牧业专家查询功能的实现 215.6.2 咨询者登录功能的实现 215.6.3 咨询者咨询情况功能的实现 215.
6、6.4 咨询者个人资料维护功能的实现 215.7 工作人员畜牧业专家咨询 / 应答模块的实现 215.7.1 工作人员进行畜牧业专家咨询功能实现 215.7.2 工作人员进行畜牧业专家应答功能实现 225.8 畜牧业专家管理员模块和管理员畜牧业专家咨询管理功能的实现 225.8.1 畜牧业专家管理员工作人员和管理员管理功能的实现 225.8.2 畜牧业专家管理员修改畜牧业专家类别及统记功能的实现 225.8.3 畜牧业专家管理员咨询者管理功能的实现 225.8.4 畜牧业专家维护咨询者管理功能的实现 225.8.5 畜牧业专家身份维护功能的实现 225.8.6 畜牧业专家咨询者统计功能的实现
7、225.8.7 畜牧业专家统计咨询过期记录功能的实现 错误!未定义书签。结 束 语 23致 谢 24参考文献 25附录 错误!未定义书签。、八前言1.1 数据库应用系统开发简介在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据 库的结构、 开发数据库应用程序的步骤、 开发体系及方法都应当有相当清晰的了 解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的 主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计 转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。数据库技术在计算机软件邻域研究中一直是非常重要的主题, 产生于 60 年
8、 代, 30 多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一 大批实用系统。并且,近年来,随着 World Wide Web(WWW) 的猛增及 Internet 技术的迅速发展,使得数据库技术之时成为最热门技术之一。1.1.1 数据库数据库由 DBMS (数据库管理系统)处理, DBMS 则由开发人员和用户通 过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引 和应用元数据。 用户数据 目前,大多数主流数据库管理系统把用户数据表示为关系。现在把关系看 作数据表。 表的列包含域或属性, 表的行包含对应业务环境中的实体的记录。 并 非所有的关系都
9、同样符合要求, 有些关系比其它关系更结构化一些。 第二章描述 了一个用以产生良好结构关系的过程,称作规范化。为了对比结构差的关系和结构好的关系之间的差别,以本文所设计的家禽 管理系统中的家禽和家禽咨询关系为例来说明,假若设计关系R1 (号,姓名,性别,身份编号, 身份证,联系电话, 家禽编号,家禽名称, 家禽类别,备注, 数量);这个关系的问题出在它有关于两个不同主题的数据,就是家禽咨询和家 禽。用这种方式构成的关系在进行修改时, 会出现问题。 因为一个家禽咨询可能 咨询多本书,如果某个家禽咨询的某个字段(如联系电话)出现变更,它所咨询 的家禽记录(可能多个)也就必须变化,这是不好的。因此数据
10、用两个关系表示 更好。现在如果某家禽咨询改变了它的联系电话,只有关系(表)user的对应行需要改变。当然,要想产生一个,显示家禽名称及其咨询联系电话的报表,就需 要将这两个表的行结合起来。 结果表明, 将关系分别存储, 在生成报表的时候将 它们结合起来,比把它们存储在一个合成的表中更好。user(姓名,性别,身份编号,身份证,联系电话,) (家禽编号,家禽名称,家禽类别,备注,数量)数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构 的描述称作元数据。因为 DBMS 产品是用来存储和操纵表的,所以大多数产品 把元数据以表的形式存储, 有时称作系统表。 这些系统表存储了数据库中表的
11、情 况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述, 它也存储索引、关键字、规则和数据库结构的其他部分。在表中存储元数据不仅对 DBMS 是有效的,对用户也是方便的,因为他们 可以使用与查询用户数据同样的查询工具来查询元数据。本文第二章所介绍的SQL 语言可以同时用于元数据和用户数据。 索引 第三种类型的数据改进了数据库的性能和可访问性,这种数据经常称作开 销数据,尽管有时也采用其他类型的数据结构,如链表,但它主要还是索引。索 引可以用来排序和快速访问数据。 下面以本人的家禽管理信息系统中的表为例来 说明。假定数据在磁盘上是按'家禽编号'的递
12、增顺序排列的,用户想打印一个 按'家禽名称'排序的家禽数据报表。为此,所有的数据都需要从源表中提取出 来并排序,除非表很小, 否则这是一个很费时的过程。 或者,可以在家禽名称' 字段上创建一个索引,该索引的条目按照家禽名称'排序,这样,该索引的条 目可以读出来,并用来按顺序访问数据。索引用于快速访问数据。例如,一个用户只想访问表中家禽类别'值为 01'的那些咨询者。如果没有索引,则必须搜索整个源表;但有了索引之后, 可以找到索引条目,并使用它来挑选所有合适的行。索引对排序和查找是有帮助的,但要付出代价。表中的行每次改变时,索 引也必须改变,这意味
13、着索引并非随意的,应该在真正需要时保存。 应用元数据存储在数据库中的第四种数据是应用元数据, 它用来存储用户窗体、 报表、 查询和其他形式的查询组件。并非所有的 DBMS 都支持应用组件,支持组件的 DBMS 也不一定把全部组件的结构作为应用元数据存储在数据库中。 然而,大多 数现代的 DBMS 产品存储这种数据作为数据库的一部分。一般来说,数据库开 发人员和用户都不直接访问应用元数据,想反,他们通过 DBMS 中的工具来处 理这些数据。MS SQL Server2000 中就支持窗体、存储过程等应用元数据。1.1.2 数据库管理系统数据库管理系统(DBMS)是指数据库系统中管理
14、数据的软件系统。 DBMS 是数据库系统的核心组成部分。 对数据库的一切操作, 包括定义、 更新及各种控 制,都是通过 DBMS 进行的。 DBMS 总是基于某种数据模型, 可以把 DBMS 看成 是某种数据模型在计算机系统上的具体实现。 根据数据模型的不同, DBMS 可以 分成层次型、网状型、关系型、面向对象型等。 MS SQL Server2000就是一种关 系型数据库管理系统。关系模型。关系模型主要是用二维表格结构表达实体集,用外键表示实体 间联系。关系模型是由若干个关系模式组成的集合。 关系模式相当于前面提到的 记录类型,它的实例称为关系,每个关系实际上是一张二维表格。关系模型和层次
15、、 网状模型的最大判别是用关键码而不是用指针导航数据, 表格简单用户易懂, 编程时并不涉及存储结构, 访问技术等细节。 关系模型是数 学化模型。 SQL 语言是关系数据库的标准化语言,已得到了广泛的应用。 DBMS 的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和 DBMS 引 擎。设计子系统有一个方便数据库及其应用创建的工具集。它典型地包含产生 表、窗体、查询和报表的工具。 DBMS 产品还提供编程语言和对编程语言的接口。运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用 来处理窗体和数据库的数据交互,以及回答查询和打印报表等。DBMS 引擎从其他两个组件接受请求,
16、 并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。 DBMS 引擎还涉及事务管理、锁、备份和恢复。1.1.3 创建数据库 数据库模式定义了数据库的结构、表、关系、域和业务规则。数据库模式 是一种设计,数据库和应用正是建立在此基础上的。域是一列可能拥有的值的集合。必须为每一个表的每一列确定域。除了数 据的物理格式外,还需要确定是否有些域对表来说是唯一的。数据库模式的最后一个要素是业务规则,它是对需要反映在数据库和数据 库应用程序中的业务活动的约束。 业务规则是模式的一个重要部分, 因为他们指 定了无论什么数据变化到达 DBMS 引擎,允许的数据值必须满足的约束。不管 无效的数据变化请求
17、是来自窗体的用户、查询 /修改请求还是应用程序, DBMS 都应该拒绝。遗憾的是, 不同的 DBMS 产品用不同的方法实施业务规则。 在某些情况下, DBMS 产品不具备实施必要业务规则的能力, 必须以代码形式把它们编入应用程 序。1.2 家禽管理系统当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是 计算机被广泛应用于信息管理系统的环境。 计算机的最大好处在于利用它能够进 行信息管理。 使用计算机进行信息控制, 不仅提高了工作效率, 而且大大的提高 了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行 信息管理与信息管理系统的开发密切相关, 系统的开发是
18、系统管理的前提。 本系 统就是为了管理好畜牧专家信息而设计的。畜牧专家作为一种信息资源的集散地,家禽和用户咨询资料繁多,包含很 多的信息数据的管理, 现今,有很多的畜牧专家都是初步开始使用, 甚至尚未使 用计算机进行信息管理。 根据调查得知, 他们以前对信息管理的主要方式是基于 文本、表格等纸介质的手工处理,对于家禽咨询情况(如咨询天数、超过限定咨 询时间的天数) 的统计和核实等往往采用对咨询卡的人工检查进行, 对咨询的咨 询权限、以及咨询天数等用人工计算、手抄进行。数据信息处理工作量大,容易 出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信 息管理手段。 尽管有的畜牧专
19、家有计算机, 但是尚未用于信息管理, 没有发挥它 的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。畜牧专家采 取手工方式对家禽咨询情况进行人工管理, 由于信息比较多, 家禽咨询信息的管 理工作混乱而又复杂; 一般咨询情况是记录在上, 家禽的数目和内容记录在文件 中,畜牧专家的工作人员和管理员也只是当时对它比较清楚, 时间一长, 如再要 进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很 长时间以前的家禽病理进行更改就更加困难了。基于这些问题,我认为有必要建立一个家禽管理系统,使家禽管理工作规 范化,系统化,
20、程序化,避免家禽管理的随意性, 提高信息处理的速度和准确性, 能够及时、准确、有效的查询和修改家禽情况。1.3 系统所做工作1)了解应用开发工具的现状2)DelPHi7.0 编程基础3)MS SQL Server 基础4)设计数据库;设计界面5)开发数据库。数据库实现的一些功能有l 数据和数据说明的醒目显示;l 多条件的查询、多条记录的检索、模糊查询;l 数据文件某种存储格式导入数据窗体,经过数据完整性校验存入数据库; l 数据库安全性的设计;l 数据库的设计、数据接口、界面的设计。2 数据库理论基础一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一 个非常重要的条件和关键技术。
21、信息管理系统所涉及的数据库设计分五个步骤:数据库需求分析、概念设 计、逻辑设计、物理设计与加载测试。( 1) 数据库需求分析的任务是将业务管理单证流化为数据流,划分主题 之间的边界,绘制出 DFD 图,并完成相应的数据字典。( 2) 概念设计的任务是从 DFD 出发,绘制出本主题的实体关系图,并 列出各个实体与关系的纲要表。( 3) 逻辑设计的任务是从 E-R 图与对应的纲要表出发,确定各个实体及 关系的表名属性。( 4) 物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出 基本表的主键,将所有的表名与字段名英文化(现在很多软件能支持中文字段, 如MS SQL Server,我就是用的
22、中文字段名),实现物理建库,完成数据库物理 设计字典。(5) 加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查 询、处理工作均可视为对数据库的加载测试工作。要设计出一个好的信息管理系统数据库,除满足系统所要求的功能外,还 必须遵守下列原则:1 基本表的个数越少越好。2 主键的个数越少越好。键是表间连接的工具,主键越少,表间的连接就 越简单。3 字段的个数越少越好。4 所有基本表的设计均应尽量符合第三范式。 数据库的设计中,如何处理多对多的关系和如何设计主键,是两个有着较大难度、需要重点考虑的问题。下面我们着重从 SQL 应用、数据库设计范式和 查询优化等方面来分析本课题的系统关键技术
23、和实现难点并加以解决。2.1 数据库系统设计及范式分析 信息系统的主要任务是通过大量的数据获得管理所需要的信息,这就必须 存储和管理大量的数据。 因此建立一个良好的数据组织结构和数据库, 使整个系 统都可以迅速、 方便、准确地调用和管理所需的数据, 是衡量信息系统开发工作 好坏的主要指标之一。2.1.1 数据库系统设计 数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组 系统和逻辑层次组织起来, 是面向用户的。 数据库设计时需要综合企业各个部门 的存档数据和数据需求,分析各个数据之间的关系,按照 DBMS 提供的功能和 描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取
24、效率高、能 满足多种查询要求的数据模型。数据库设计的步骤是:(1)数据库结构定义:目前的数据库管理系统( DBMS )有的是支持联 机事务处理CLTP (负责对事务数据进行采集、处理、存储)的操作型 DBMS , 有的可支持数据仓库、有联机分析处理 CLAP (指为支持决策的制定对数据的一 种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象 数据库。针对选择的DBMS,进行数据库结构定义。( 2) 数据表定义:数据表定义指定义数据库中数据表的结构,数据表的 逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、 可否为空等。 关系型数据库要尽量按关系规范化
25、要求进行数据库设计, 但为使效 率高,规范化程度应根据应用环境和条件来决定。 数据表设计不仅要满足数据存 储的要求, 还要增加一些如反映有关信息、 操作责任、 中间数据的字段或临时数 据表。( 3) 存储设备和存储空间组织:确定数据的存放地点、存储路径、存储 设备等,备份方案,对多版本如何保证一致性和数据的完整性。( 4) 数据使用权限设置:针对用户的不同使用要求,确定数据的用户使 用权限,确保数据安全。( 5) 数据字典设计:用数据字典描述数据库的设计,便于维护和修改。 为了更好地组织数据和设计出实际应用数据库,应该注意如下问题: 规范化地重组数据结构: 对数据进行规范化表达, 这在后面将会
26、具体讨论。 关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建 立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完 成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系 结构中,一个规范化数据库系统结构就建立起来了。建立关系数据结构涉及三方面内容: 确定关联的关键指标项并建立关联表; 确定单一的父系记录结构;建立整个数据库的关系结构。( 1)链接关系的确定 在进行了上述数据规范化重组后,已经可以确保每一个基本数据表 (我们简 称为表 )是规范的,但是这些单独的表并不能完整地反映事物,通常需要通过指 标体系整体指标数据才能完整全面地反映问题。 也
27、就是说在这些基本表的各宇段 中,所存储的是同一事物不同侧面的属性。 那么计算机系统如何能知道哪些表中 的哪些记录应与其它表中的哪些记录相对应,它们表示的是同一个事物呢?这就需要在设计数据结构时将这种各表之间的数据记录关系确定下来。 这种表与表之 间的数据关系一般都是通过主或辅关键词之间的连接来实现的。 因为在每个表中 只有主关键词才能唯一地标识表中的这一个记录值 (因为根据第三范式的要求, 表中其它数据字段函数都依赖于主关键词 ),所以将表通过关键词连接就能够唯 一地标识出某一事物不同属性在不同表中的存放位置。( 2)确定单一的父子关系结构 所谓确定单一的父系关系结构就是要在所建立的各种表中消
28、除多对多(以下用 M:N 来表示)的现象,即设法使得所有表中记录之间的关系呈树状结构(只能由一个主干发出若干条分支, 而不能有若干条主干交错发出若干条分支状况 )。 所谓的“父系”就是指表的上一级关系表。消除多对多关系可以借助于 E-R 图 的方法来解决,也可以在系统分析时予以注意,避免这种情况的发生。消除这种 M:N 情况的办法也很简单,只需在二表之间增加一个表,则原来 M:N 的关系就改成了 M:1,1:N 的关系了。确定数据资源的安全保密属性:一般 DBMS 都提供给我们自己定义数据安全保密性的功能。系统所提供的 安全保密功能一般有 8个等级(0-7级),4种不同方式 (只读、只写、删除
29、、修改), 而且允许用户利用这 8 个等级的 4种方式对每一个表自由地进行定义。定义安全保密性的方法一般有如下几种:a原则上所有文件都定义为 4级,个别优先级特别高的办公室(终端或微 机的入网账号 )可定义高于 4级的级别,反之则定义为低于 4的级别。b 统计文件(表)和数据录入文件一般只对本工作站定义为只写方式,对其 它工作站则定义为只读方式。c.财务等保密文件一般只对中工作站(如财务科等)定义为可写、可改、可 删除方式, 对其它工作站则定义为只读方式, 而且不是每个人都能读, 只有级别 相同和高级别者才能读。2.1.2 数据库设计范式分析 建立起一个良好的数据指标体系,是建立数据结构和数据
30、库的最重要的一环。一个良好的数据指标体系是建立 DB 的必要条件,但不是充分条件。我们完 全可以认为所建指标体系中的一个指标类就是关系数据库中的一个基本表, 而这 个指标类下面的一个个具体指标就是这个基本表中的一个字段。 但如果直接按照 这种方式建库显然还不能算最佳。 对于指标体系中数据的结构在建库前还必须进 行规范化的重新组织。2.2 SQL语言介绍2.2.1 SQL 基础SQL(Structured Query Language结构查询语言)是一个功能强大的数据库语 言。SQL通常使用于数据库的通讯。ANSI (美国国家标准学会)声称,SQL是 关系数据库管理系统的标准语言。 SQL 语句
31、通常用于完成一些数据库的操作任 务,比如在数据库中更新数据,或者从数据库中检索数据。使用 SQL 的常见关 系数据库管理系统有: Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres 等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、 "Update"、"Delete"、"Create"和"Drop"常常被用于完成
32、绝大多数数据库的操作。 MS SQL Server 就是用的 Transact- SQL。SQL 语言有着非常突出的优点,主要是:1. 非过程化语言2. 统一的语言3. 是所有关系数据库的公共语言非过程化语言: SQL 是一个非过程化的语言,因为它一次处理一个记录, 对数据提供自动导航。 SQL 允许用户在高层的数据结构上工作,而不对单个记 录进行操作,可操作记录集,所有 SQL 语句接受集合作为输入,返回集合作为输出。 SQL 的集合特性允许一条 SQL 语句的结果作为另一条 SQL 语句的输入。SQL 不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于 要得到的结果;所有 SQ
33、L 语句使用查询优化器,它是 RDBMS 的一部分,由它 决定对指定数据存取的最快速度的手段, 查询优化器知道存在什么索引, 在哪儿 使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。统一的语言: SQL 可用于所有用户的 DB 活动模型,包括系统管理员、数 据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL 为许多任务提供了命令,其中包括:1. 查询数据2. 在表中插入、修改和删除记录3. 建立、修改和删除数据对象4. 控制对数据和数据对象的存取5. 保证数据库一致性和完整性 以前的数据库管理系统为上述各类操作提供单独的语言, 而 SQL 将全部任 务
34、统一在一种语言中。所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到 另一个,所有用 SQL 编写的程序都是可以移植的。222SQL语句SQL 功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且 用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:DML ( Data Manipulation Language,数据操作语言):用于检索或者修改数 据;DDL ( Data Definition Language,数据定义语言):用于定义数据的结构, 比如 创建、修改或者删除数据库对象;
35、DCL( Data Control Language数据控制语言):用于定义数据库用户的权 限。DML 组可以细分为以下的几个语句:SELECT:用于检索数据;INSERT :用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据;DELETE :用于从数据库中删除数据。DDL 语句可以用于创建用户和重建数据库对象。下面是 DDL 命令:CREATE TABLE ,ALTER TABLE ,DROP TABLE,CREATE INDEX ,DROP INDEX下面是一个简单 SQL 语句的例子:我们使用 SQL 语句来从中检索号'为 000001'的咨询姓名:SELE
36、CT 姓名 FROM WHERE 号 = 000001' DDL 与 DML 数据定义语言 DDL :它是用来创建和修改数据库结构的一种语句,包括 Create、Alter 和 Drop 语句。数据操作语言 DML :包括数据查询与数据更新。数据查询主要是由 Select 语句完成, 这一点不再赘述。 而数据更新所造成的风险大大超过数据查询。 数据 库管理系统必须在更改期内保护所存储的数据的一致性, 确保有效的数据进入数 据库,数据库必须保持一致性, DBMS 还必须协调多用户的并行更新, 以确保用 户和它们的更改不至于影响其它用户的作业。用于修改数据库内容的 SQL 语
37、句主要有以下三个:(1) Insert,向一个表中加入新的数据行(2) Delete,从一个表中删除数据行(3) Update,更改数据库中已经存在的数据In sert标准语法:INSERT INTO table_name (col1, col2.) VALUES(value1, value2.) 下例要将号为 000001'作为一个新的咨询情况加入咨询情况表OWNER中Insert Intoowner (号,家禽编号,咨询日期 )values (000001',00000001',2002-9-12')Insert 语句还可以将多行数据添加到目标表中去,在这种
38、形式的 Insert 语 句中,新行的数据值不是在语句正文中明确地指定的, 而是语句中指定的一个数 据库查询。 添加的值来自数据库自身的行, 在某些特定的状态下, 这是非常有用 的。多行 Insert 语句为拷贝数据提供了一种紧凑而高效的方法,但我在自已做 的家禽管理系统中没有使用这种方法, 我在系统中是使用循环依照上面的用法来 完成多个记录的插入。Update 语句用于更新单表中选定行的一列或多列的值。要更新的目标表在 语句中定义,Set子句则指定要更新哪些列并计算它们的值。Update语句总是包含Where语句,而且Update语句比较危险,所以您必须明确地认识到Where语句的重要性,W
39、here语句被用来指定需要更新的行。标准语法:UPDATE table_nameSET columnname1 = value1, columname2 = value2.WHERE search_conditionDelete 语句标准语法:DELETE FROM tablename WHERE condition 复杂操作实现 在信息管理系统中,我们往往会遇到归类、汇总、映射、索引、子查询等 复杂操作,相应的支持与实现如下:u GROUP BY 方法GROUP BY 子句语法为:SELECT column1, SUM(column2)FROM "list-of-ta
40、bles"GROUP BY "column-list"这个 GROUP BY 子句将集中所有的行在一起, 它包含了指定列的数据以及 允许合计函数来计算一个或者多个列。在本人的系统中在显示数据时用到了此语句来对查询所得的内容排序然后 再显示。u 组合条件和布尔运算符以下的SQL语句中就含有组合条件:SELECT column1, SUM(column2)FROM "list-of-tables"WHERE "condition1" AND "condition2"下面是一个示例:SELECT 身份描述FRO
41、M ID,userWHERE ID.身份编号=USER.身份编号 and use号二000001'这条 SQL 语句是从 user、id 表中查找咨询证号为 000001 的咨询的身份描 述,第三条语句中如果其中有一个条件为假,那么就什么都没有显示。u UNION 子句 有些时候,需要一起浏览多个查询的结果、组合它们的输出,我们可以使 用 UNION 关键字。3 应用系统开发工具3.1 Delphi6.0 VCL组件的体系结构Delphi 类可以粗略地分成两部分:一部分是组件类,这些组件类通常以某 种方式出现在组件面板上, 当用户从组件面板上点取一个类的图标后, 在程序中 就自动生成了
42、该类的对象(非可视组件除外) ;另一部分是功能类,这此功能类 的对象通常出现在程序代码中, 起着不可代替的作用, 但是这些功能类在组件面 板上是找不到的。 在 Delphi 中,每一个类的祖先都是 Tobject 类,整个类的层次结 构就像一棵倒挂的树,在最顶层的树根即为 Tobject 类。这样,按照面向对象编 程的基本思想,就使得用户可用 Tobject 类这个类型代替任何其它类的数据类型。 实际上在 Delphi 的类库中, Tobject 类派生出了为数相当众多的子类,它们形成 了一个庞大的体系, 通常情况下, 如果不自行开发组件, 就不必了解整个类的体 系结构,只用到类层次树的叶结点
43、就足够了。凡是做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说, 数据库应用程序必须和用户界面 (可以是图形界面, 也可以是命令接口) 元素相 结合,只讲界面或只讲数据库本身都构不成数据库应用程序,因而用 Delphi6.0 开发数据库应用程序就隐含着界面开发。组件在 Delphi 程序的开发中是最显眼的角色。我们知道,在编写程序时一 般都开始于在组件面板上选择组件并定义组件间的相互作用。 但也有一些组件不 在组件面板上,例如 Tform和Tapplication (典型的非可视组件)。组件是 Tcomponents派生出来的子类,可以流的形式存放在 DFM文件中,具有事件和 Pub
44、lish 属性。窗口组件类是窗口化的可视化组件类, 在 Delphi 的类库中占有最大的份额。 在实际编程中,窗口组件类的对象都有句柄, 可以接受输入焦点和包含其它组件。图形组件与窗口组件并列,是另一大类组件。图形组件不是基于窗口的, 因而不能有窗口句柄, 不能接受输入焦点和包含其它组件。 在实际编程中, 它们 必须寄生于它们的宿主窗口组件类的对象, 由它们的拥有者负责其显示, 而 且它们还能触发一些和鼠标活动相关的事件。图形控件最典型的例子是 Tlabel 和TspeedButton可以看出图形组件的功能很弱,图形组件的用处何在呢?其实 使用图形组件的最大好处在于节省资源, 正是因为它们的功
45、能较弱, 所以使用的 系统资源就要少。 在一个应用程序中, 如果能在不影响其功能的前提下合理大量 地使用图形组件,将会大减少程序对系统资源的消耗。非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中 是不可见的 (除各种对话框组件之外, 事实上有人认为对话框组件不能归入非可 视组件,应该是另一种介于可视与非可视之间的组件) 。最后要说明一下,常说的控件实际上是一种组件。也就是说组件这个概念 要大于控件,控件在内涵上包含于组件中。控件由 Windows 系列操作系统提出 并使用,而组件是 Borland 和其它厂商在对 Windows 控件做了必要的扩展之后提 出来的概念,它们是在不
46、同时期由不同的厂商提出的概念。3.2 数据库组件介绍用 Delphi6 开发数据库应用, 重点是和各种数据库组件打交道, 能和数据库 挂钩的组件对象有5种,它们是:Session (数据库会话)、Database (数据库)、 Dataset (数据集)、DataSource (数据源)、Data control (数据控制组件,也叫 data-controls 即数据感知组件)。其中前面 4 种统称为数据访问( Data Access) ADO 组件 Delphi6.0 包含了可以用来访问 Microsoft 公司的 ActiveX Data Objects (ADO)格式数据库的组件。AD
47、O是Micrsoft公司关于各种类型数据的高等界 面,后来逐渐演变成满足所有数据访问需要的完整解决办法。 ADO 的对象模型 是所有数据访问接口对象模型中最简单的一种。 Microsoft 公司用来访问 ADO 数 据的应用程序界面技术是 OLE DB。 OLE DB 是一种底层编程接口,用来访问 许多不同类型的数据源, 其中包括消息、文件系统以及其他一些非传统的数据源。 OLE DB是一个由Component Object Model (COM)接口组成的集合,用来隐藏 创建数据访问服务过程中的细节。 OLEDB 提供了访问任何数据资源的方法,包 括相互关联的数据库和相互不关联的数据库、 E
48、mail 和文件系统、文本和图形以 及用户定义的数据对象。Delphi 的 ADO 组件无需依靠 BDE 而是使用 ADO 技术,提供了可以通过 数据控制组件访问数据的新方法。唯一的要求是在使用 ADO 组件时必须运行 ADO/OLE DB。 ADO 组件的使用使得 DELPHI 在访问数据的类型和采用的技 术方面都有了很大的突破。数据模块设计窗口 : 数据模块设计窗口是用来设计和维护数据模块的。数 据模块设计窗口中包含了所有以 .DTI 作为文件扩展名的 Data Diagram 文件的信 息。 DTI 文件在编译时不起任何作用。3.3 SQL语言在Delphi中的应用在 Delphi 中使
49、用 SQL 语言非常方便,一般来说,都是通过 Tquery 或 TADOquery组件来使用SQL语言的。可以在 Tquery或TADOquery组件的SQL 属性中设置 SQL 语句。设计程序时,在该组件的属性对话框中选择 SQL 属性, 单击带省略号的按钮,就可以打开 String List Editor 对话框,然后我们就可以在 对话框中添加SQL语句。还可以使用 Delphi的SQL Builder来自动生成SQL语 句,这样可以避免手工编写 SQL而可能造成的语法错误。静态 SQL 语句在程序设计时便已固定下来,它不包含任何参数和变量。动态 SQL 语句,也被称作参数化的语句,在其中
50、间包含着表示字段名或表 名的参数,例如下面的语句是一条动态 SQL 语句:Select * From Where 家禽编号 =:Code;其中的变量 Code 便是一个参数变量, 它由一个冒号引导, 在程序运行过程 中,必须要为该参数赋值,该条 SQL 语句才能正确执行,每次运行应用程序时 可以为该参数变量赋予不同的值。为参数赋值有三种方法: 根据参数在 SQL 语句中出现的顺序, 设置 TADOQuery 组件的 parameters 属性值为参数赋值。 直接根据 SQL 语句中各参数的名字,调用 ParamByName 方法来为各参 数赋值。 将 TADOQuery 组件的 DataSou
51、rce 属性设置为另一个数据源,这样将另 一个数据源中与当前TADOQuery组件的SQL语句中的参数名相匹配的字段值赋 给其对应的参数。 利用这种方法也能实现所谓的连接查询, 创建主要明细型数 据库应用。在使用动态SQL语句编程时,常常用到一个很重要的方法Prepare调用Prepare方法之后,Delphi会将带参数的SQL语句传送给与其对应的数据库引擎, 对动态 SQL 语句进行语法分析和优化。虽然在用动态 SQL 语句编程时,调用 Prepare方法并不是必须的,但是调用Prepare方法后,会极大地提高动态SQL语 句的执行性能,特别是当要反复多次执行同一条动态 SQL 语句时,其优
52、越性会 更加明显。如果在应用程序中执行一条 SQL语句之前并没有显式地调用 Prepare方法, 每次在执行SQL语句时,Delphi会隐含地调用Prepare方法以准备这个查询。TadoQuery部件还有一个Prepare属性,这是一个布尔型属性,当其属性值 为True时,表明该查询已被准备好了( SQL语句已被传送到数据库引擎中), 当我们使用参数编辑器Parameters Editor来为动态SQL语句中的参数赋值时,当 设置完相应的参数值并退出参数编辑器时,Delphi会隐含地调用Prepare方法以准备好查询。当SQL语句执行完之后,要想准备下一个查询,首先必须调用Close方法,
53、然后才能调用Prepare方法准备下一个查询。一般来说,在一个应用程序中应该 调用一次Prepare方法,常常在窗体的 On Create事件处理过程中调用Prepare方 法,然后用上述介绍的方法为参数赋值,最后调用Open方法或ExecSQL方法执行 SQL 语句,以完成查询。当然在调用Prepare方法准备好一个查询时,会消耗一些数据库资源,因而 每当一个查询执行完毕之后,要养成调用Un Prepare方法以撤消查询的好习惯。在运行程序过程中,通过程序改变TQuery或TADOquery部件的SQL属性值时, Delphi会自动地调用Close方法和Un Prepare方法,以撤消查询。
54、在程序运行过程中,要想设置 Tquery或TADOquery部件的SQL属性,必 须首先调用Close方法,关闭TQuery或TADOquery部件,然后再调用Clear方 法清除SQL属性中现存的SQL命令语句,最后再调用Add方法为SQL属性设 置新的 SQL 命令语句。例如:号,密码 FROM user WHERE (号 = :tt)');在为TQuery或TADOquery部件设置SQL属性时调用Close方法总是很安 全的,如果 TQuery 或 TADOquery 部件已经被关闭了, 调用 Close 方法时不会产 生任何影响。在应用程序中为 SQL 属性设置新的 SQL
55、命令语句时,必须要调用 Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便 调用Add方法向SQL属性中设置SQL命令语句,那么新设置的 SQL命令语句 会追加在现存 SQL 命令语句后面, 在程序运行时常常会出现出乎意料的查询结 果甚至程序无法运行下去。在这里要特别注意的,一般情况下TQuery或TADOquery部件的SQL属性 只能包含一条完整的 SQL 语句,它不允许被设置成多条 SQL 语句。当然有些数 据库服务器也支持在TQuery或TADOquery部件的SQL属性中设置多条SQL语 句,只要数据库服务器允许这样, 我们在编程时可以为 SQL 属性
56、设置多条 SQL 语句。在为 TQuery 或 TADOquery 部件设置完 SQL 属性的属性值之后, 也即编写 好适当的SQL程序之后,可以有多种方式来执行 SQL程序。在设计过程中,设置完 TQuery 或 TADOquery 部件的 SQL 属性之后将其 Active属性的值置为True,这样便可以执行SQL属性中的SQL程序,如果应用 中有与 TQuery 或 TADOquery 部件相连的数据浏览部件 ( 如 TDDGrid TDBEdit 等)那么在这些数据浏览部件中会显示 SQL程序的执行结果。在应用程序运行过程中,通过程序调用TQuery或TADOquery组件的Open
57、方法或ExecSQL方法可以执行其SQL属性中的SQL程序。Open方法和ExecSQL 方法是不一样的。Open方法只能用来执行SQL语言的查询语句(Select命令),并 返回一个查询结果集,而ExecSQL方法还可以用来执行其它常用的 SQL语句(如 INSERT, UPDATE, DELETE 等命令),例如:Query1.Open (这样会返回一个查询结果集 )如果调用Open方法,而没有查询结果时,会出错。此时应该调用ExecSQL 方法来代替Open方法。如:Query1.ExecSQL (没有返回结果 )当然在设计应用程序时,程序设计人员是无法确定 TQuery 或 TADOq
58、uery 组件中的SQL语句是否会返回一个查询结果的。对于这种情况应当用TryExcept 模块来设计程序。在 Try 部分调用 Open 方法,而在 Except 部分调用 ExceSQL 方法,这样才能保证程序的正确运行。例如:TryQuery1.OpenExceptQuery1.ExecSQLEnd通过Tquery或TADOquery组件可以获得两种类型的数据:u “活动”的数据这种数据就跟通过TTable部件获得的数据一样,用户可以通过数据浏览部 件来编辑修改这些数据,并且当调用 Post 方法或当焦点离开当前的数据浏览部 件时,用户对数据的修改自动地被写回到数据库中。u 非活动的数据 (只读数据)用户通过数据浏览部件是不能修改其中的数据。在缺省情况下,通过TQuery 部件获得的查询结果数据是只读
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 股份制企业创立人合同书格式
- 建筑工程劳务分包合同
- 工程合同范本在线查阅
- 2024新版简单食堂承包合同书范本
- 简单股权转让协议书范本
- 建筑维修保养服务补充协议
- 2023年高考地理重点难点考点通练-服务业(原卷版)
- 1.1坚持改革开放(导学案) 2024-2025学年统编版道德与法治九年级上册
- 个人投资合同协议样本
- 生物中图版自主训练:第一单元第二章第二节染色体结构变异对性状的影响
- 7.1促进民族团结 (课件) 2024-2025学年九年级道德与法治上册 (统编版)
- 2025届新高考语文热点冲刺复习议论文开头结尾
- 中国法律史-第二次平时作业-国开-参考资料
- (正式版)SHT 3551-2024 石油化工仪表工程施工及验收规范
- syb游戏模块 基本企业周期
- 上海市初级中学英语学科教学基本要求
- 开展修旧利废活动方案
- 交流高压架空输电线路跨越石油天然气管道的相关规定
- 初三全一册单词表汉语部分
- 《幼儿教师口语训练》课程实训手册
- 关于“钓鱼执法”现象的法律思考
评论
0/150
提交评论