- 147.55 KB
- 2022-05-16 18:35:11 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
图书仓库管理系统摘要本系统主要完成对图书仓库的库存管理,包括图书入库、出库、库存,员工信息,供应商信息以及密码管理等六个方面。系统可以完成对各类信息的浏览、查询、添加、删除、修改、报表等功能。系统的核心是入库、库存和出库三者之间的联系,每一个表的修改都将联动的影响其它的表,当完成入库或出库操作时系统会自动地完成库存的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。系统采用MicrosoftOffice中的Access2000来设计数据库,并使用当前优秀的开发工具一Delphi,它有着最为灵活的数据库结构,对数据库应用有着良好的支持。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。关键字:数据库,SQL语言,Delph6,数据库组件,仓库管理术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经
济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。书籍做为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种各样不同的选择。与此同时,为了管理大量的图书,图书仓库也大量的出现,仓库的管理问题也就提上了日程。随着图书的大量增加,其管理难度也越来越大,如何优化仓库的日常管理也就成为了一个大众化的课题。在计算机飞速发展的今天,将计算机这一信息处理利器应用于仓库的日常管理已是势必所然,而且这也将为仓库管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和社会效益。主要体现在:极大提高了仓库工作人员的工作效率,大大减少了以往入出存流程繁琐,杂乱,周期长的弊端。基于仓库管理的全面自动化,可以减少入库管理、出库管理及库存管理中的漏洞,可以节约不少管理开支,增加企业收入。仓库的管理的操作自动化和信息的电子化,全面提高了仓库的管理水平。随着我国改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,
没有现代化的管理是万万不行的,仓库管理的全面自动化、信息化则是其中极其重要的部分。为了加快仓库管理自动化的步伐,提高仓库的管理业务处理效率,建立仓库管理系统已变得十分心要。入库、库存、出库还是现在企业图书仓库管理的常规基本模式,虽然,最近又出现了很多新的管理模式,如:基于零库存思想的沃尔玛特管理方式,但这些新的思想在中国大部分企业的管理中还是难以实现的。所以如何设计好仓库管理系统,尽可能地减少仓库管理的重复性和低效性就成为当前最为重要的问题。图书仓库管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。另外,员工信息和供应商信息管理也是仓库管理中一个必不可少的部分,它提供着与入库和出库相关的地一些信息,使得整个系统更加完整,更加实用。通过对仓库管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。§开发工具的选择自Java诞生以来,随着Internet技术的普及和应用需求的变化,以第四代语言为主的应用开发产品发生了较大的
变化,它们不仅已成为人们开发应用的开发工具,而且很多产品已发展成为一种强有力的应用开发环境。这些新型的开发工具通常以一种集成软件包的形式提供给开发人员,被称为Studio或Suite。例如,微软的VisualStudio,Borland公司的Delphi等数据库辅助开发工具。现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:Microsoft公司的VisualBasic版Microsoft公司的VisualC++版Borland公司的Delphi版在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。
而Delphi是一个非常理想选择。Delphi6是操作系统中快速应用开发环境的最新版本。它也是当前Windows平台上第一个全面支持最新Web服务的快速开发工具。无论是企业级用户,还是个人开发者,都能够利用Delphi6轻松、快捷地构建新一代电子商务应用。Delphi6是惟一支持所有新出现的工业标准的RAD环境,包括XML/XSL,SOAP和WSDL等。DelphiG是可视化的快速应用程序开发语言,它提供了可视化的集成开发环境,这一环境为应用程序设计人员提供了一系列灵活而先进的工具,可以广泛地用于种类应用程序设计。在Delphi6的集成开发环境中,用户可以设计程序代码、运行程序、进行程序错误的调试等,可视化的开发方法降低了应用程序开发的难度。Delphi的基础编程语言是具有面向对象特性的Pa+sca.1语言,即ObjectPascal。ObjectPascal具有代码稳定、可读性好、编译速度快等优点,并将面向对象的概念移植到了Pascal语言中,使这种基础语言有了新的发展空间。使用Delphi,我们几乎可以作任何事情,还可以撰写种各种类型的应用程序,动态链接库、CON、或CORBA对象,CGI/ISAPI程序,MierosoftBackOffice应用程序。程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次分布式系统,都可以使用Delphi进行开发,其友好的集成开发界面,可视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受广大程序开发人员的好评尤其是Delphi对数据库应用的强大支持,大大提高了数据
库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计人员的喜爱。Delphi为数据库应用开发人员提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。§本文所做工作引言部分介绍了本系统的课题来源以及对数据库开发工具的选择。第二章介绍了数据库的发展,关系数据库,数据库体系结构,并系统介绍了SQL语言,为设计和理解应用程序做了铺垫。第三章系统介绍了Delphi及其部分控件,SQL语言在Delphi中的应用,以及Access等。第四章是本文的主体,按照软件工程的要求,从需求分析开始,经过概要设计最后到详细设计,完成对整个系统的设计。第五章根据第四章的设计结果利用ACCeSS2000和Delphi进行了具体的窗体和应用程序设计。总结部分介绍了设计体会和编程体会,并指出了系统设计中的不足和改进的方向发展到数据库系统是信息处理领域的一个重大变化。在文件系统阶段,人们关注的中心问题是系统功能的设计,因而程序设计处于主导地位,数据只起着服从程序需要的作用。在数据库方式下,信息处理观念已
为新体系所取代,数据占据了中心位置。数据结构的设计成为信息系统首先关心的问题,而利用这些数据的应用程序设计则退居到以既定的数据结构为基础的外围地位。目前世界上已有数百万个数据库系统在运行,其应用已经深入到人类社会生活的各个领域,从企业管理、银行业务、资源分配、经济预测一直到信息检索、档案管理、普查统计等。并在通信网络基础上,建立了许多国际性的联机检索系统。我国20世纪90年代初在全国范围内装备了12个以数据库技术为基础的大型计算机系统,这些系分布在邮电、计委、银行、电力、铁路、气象、民航、情报、公安、军事、航天和财税等行业。数据库技术还在不断的发展,并且不断地与其它计算机技术相互渗透。数据库技术与网络通信技术相结合,产生了分布式数据库系统。数据库技术与面向对象技术相结合,产生了面向对象数据库系统。在数据库技术中有四个名词,其概念应该分清。数据库:DB是统一管理的相关数据的集合。DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。数据库管理系统:DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于
某种数据模型,可以分为层次型、网状型、关系型和面向对象型DBMS。数据库系统:DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。数据库技术:这是一门研究数据库的结构、存储、管理和使用的软件学科。数据库技术是操作系统的文件系统基础上发展起来的。而DBMS本身要在操作系统的支持下才能工作。数据库不仅用到数据结构的知识,而且丰富了数据结构的内容。在关系数据库中要用到集合论、数理逻辑的理论。因此,数据库技术是一门综合性较强的学科。§数据库理论基础数据库模型从20世纪50年代中期开始,计算机的应用由科学研究部门逐步扩展到企业、行政部门。至60年代,数据处理成为计算机的主要应用。数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论体系和实用技术。模型是对现实世界的抽象。在数据库技术中,我们用模型的概念描述数据库的结构与语义,对现实世界进行抽象,表示实体类型及实体间联系的模型称为“数据模型”。目前广泛作用的数据模型可分为两种类型。
一种是独立于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构这类模型称为“概念数据模型”。要领模型用于建立信息世界的数据模型,强调其语义表迗功能,应该概念简单、清晰,易于用户理解,它是现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具。这一其中著名的模型是“实体联系模型”。另一种数据模型是直接面向数据库的逻辑结构,它是现实世界的第二层抽象。这类模型涉及到计算机系统和数据库管理系统,又称为“结构数据模型”。例如,层次、网状、关系、面向对象等模型。这类模型有严格的形式化定义,以便于在计算机系统中实现。层次模型。用树型结构表示实体类型及实体间联系的数据模型。树的结点是记录类型,每个非根结点有且只有一个父结点。上一层记录类型和下一层记录类型间联系是1:N联系。层次模型的特点是记录之间的联系通过指针实现,查询效率较高。但层次模型有两个缺点:一是只能表示1:N联系,虽然有多种辅助手段实现了M:N联系,但都较复杂,用户不易掌握,二是由于树型结构层次顺序的严格和复杂,引起数据的查询和更新操作也很复杂,因此,编写应用程序也很复杂。网状模型。用有向图结构表示实体类型及实体间联系的
数据模型。。1969年DBTG报告提出的数据模型是网状模型的主要代表。有向图中的结点是记录类型,有向边表示从箭尾一端的记录类型到箭头一端的记录类型间联系是1:N联系。网状模型的特点:记录之间联系通过指针实现,M:N联系也容易实现,查询效率较高。网状模型的缺点是编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。由于层次系统和网状系统的应用程序编制比较复杂,因此,从20世纪80年代中期起,其市场已被关系系统所取代。但是使用这两种模型建立起的许多数据库仍然在正常运转,只是在外层加了个关系数据库语言的接口。网状模型有许多成功的产品,20世纪70年代的产品大部分网状系统,例如,Honeywell公司的IDS/II、HP公司的IMAGE/3000、Burroughs公司的DMSII、Umivac公司的DMS1100、Cullinet公司的IDMS、Cimcom公司的TOTAL等关系模型。关系模型的主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。20世纪70年代对关系数据库的研究主要集中在理论和实验系统的开发方面。80年代初才形成产品,但很快得到广泛的应用和
普及,并最终取代了层次、网状数据库产品。现在市场上典型的关系DBMS产品有DB2、ORACLE、SYBASE、INFORMIX和微机型产品Foxpro、Access等。关系模型和网状、层次模型的最大区别是:关系模型用表格数据而不是通过指针链来表示和实现实体间联系。关系模型的数据结构简单、易懂。只需用简单的查询语句就可对数据库进行操作。关系模型是数学化的模型,可把表格看成一个集合,此集合论、数理逻辑等知识可引入到关系模型中来。关系模型已是一个成熟的有前途的模型,已得到广泛应用。面向对象模型。目前,关系数据库的使用已相当普遍,但是,现实世界中仍然存在着许多含有复杂数据结构的应用领域,例如,CAD数据、图形数据等,而关系模型在这方面的处理能力就显得力不从心。因此,人们需要更高级的数据库技术来表迗这类信息。面向对象的概念最早出现在程序设计语言中,随后迅速渗透到计算机领域的每一个分支。对象数据库是面向对象概念与数据库技术相结合的产物面向对象模型能完整地描述现实世界的数据结构,具有丰富的表达能力,但模型相对较复杂,涉及的知识面也广,因此面向对象数据库尚未迗到关系数据库那样的普及程度。数据库体系结构数据库的体系结构分三级:内部级,概念级和外部级。这个三级结构有时也称为“三级模式结构”,或“数据抽象
的三个级别”,最早是在1971年通过的DBTG报告中提出,后来收入在1975年的美国ANSI/SPARC报告中。虽然现在DBMS的产品多种多样,在不同的操作系统支持下工作,但是大多数系统在总的体系结构上都具有三级模式的结构特征。从某个角度看到的数据特性称为“数据视外部级最接近用户,是单个用户所能看到的数据特性单个用户使用的数据视图的描述称为“外模式”。概念级涉及到所有用户的数据定义,是全局的数据视全局数据视图的描述称为“概念模式”。内部级最接近于物理存储设备,涉及到实际数据存储的结构。物理存储数据视图的描述称为“内模式”。数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。三级结构之间往往差别很大,为了实现这三个抽象级别的联系和转换,DBMS在三级结构之间提供两个层次的映象:外模式/模式映象,模式/内模式映象。此处模式是概念模式的简称。数据的独立性由于数据库系统采用三级模式结构,因此系统具有数据独立性的特点。在数据库技术中,数据独立性是指应用程序
和数据之间相互独立,不受影响。数据独立性分成物理数据独立性和逻辑数据独立性两级。物理数据独立性如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化,那么模式/内模式映象也要进行相当的修改,使概念模式尽可能保持不变。也就是对内模式的修改尽量不影响概念模式,当然,对于外模式和应用程序的影响更小,这样,我们称数据库迗到了物理数据独立性。逻辑数据独立性如果数据库的概念模式要进行修改,譬如增加记录类型或增加数据项,那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。也就是对概念模式的修改尽量不影响外模式和应用程序,这样,我们称数据库达到了逻辑数据独立性。现有关系系统产品均提供了较高的物理独立性,而对逻辑独立性的支持尚有欠缺,例如,对外模式的数据更新受到限制等。范式建立起一个良好的数据指标体系,是建立数据结构和数据库的最重要的一环。一个良好的数据指标体系是建立DB的必要条件,但不是充分条件。我们完全可以认为所建指标体系中的一个指标类就是关系数据库中的一个基本表,而这
个指标类下面的一个个具体指标就是这个基本表中的一个字段。但如果直接按照这种方式建库显然还不能算最佳。对于指标体系中数据的结构在建库前还必须进行规范化的重新组织。在数据的规范化表迗中,一般将一组相互关联的数据称为一个关系(relation),而在这个关系下的每个数据指标项则被称为数据元素(dataelement),这种关系落实到具体数据库上就是基本表,而数据元素就是基本表中的一个字段(field)。规范化表达还规定在每一个基本表中必须定义一个数据元素为关键字(key),它可以唯一地标识出该表中其它相关的数据元素。在规范化理论中表是二维的,它有如下四个性质:在表中的任意一列上,数据项应属于同一个属性(如中每一列都存放着不同合同记录的同一属性数据)。表中所有行都是不相同的,不允许有重复组项出现(如中每一行都是一个不同的合同记录)。
在表中,行的顺序无关紧要(如图中每行存的都是合同记录,至于先放哪一个合同都没关系)。在表中,列的顺序无关紧要,但不能重复(如图中合同号和合同名谁先谁后都没关系,但二者不可重复或同名)。在对表的形式进行了规范化定义后,数据结构还有五种规范化定义,定名为规范化模式,称为范式。在这五种范式中,一般只用前三种,对于常用系统就足够了。而且这五种范式是“向上兼容”的,即满足第五范式的数据结构自动满足一、二、三、四范式,满足第四范式的数据结构自动满足第一、二、三范式,,依此类推第一范式(firstnormalform,简称1stNF)就是指在同一表中没有重复项出现,如果有则应将重复项去掉。这个去掉重复项的过程就称之为规范化处理。在本文所讨论的开发方法里,IstNF实际上是没有什么意义的。因为我们按规范化建立的指标体系和表的过程都自动保证了所有表都满足IstNFo第二范式(secondnormalform,简称2ndNF)是指每个表必须有一个(而且仅一个)数据元素为主关键字(Primarykey),其它数据元素与主关键字对应。例如,在中如果我们将合同号定义为主关键字(其它数据元素中的记录数据都有可能重名,故不能作为主关键字),故只要知
道了一个合同记录的合同号,就可以唯一地在同一行中找到该合同的任何一项具体信息。通常我们称这种关系为函数依赖(functionaldepEndence)关系。即表中其它数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。第三范式(thirdnormalform,简称3rdNF)就是指表中的所有数据元素不但要能够唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其它的函数关系。也就是说对于一个满足了2ndNF的数据结构来说,表中有可能存在某些数据元素依赖于其它非关键宇数据元素的现象,必须加以消除。为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。§SQL语言基础SQL筒介用户对数据库的使用,是通过数据库管理系统提供的语言来实现的。不同的数据库管理系统提供不同的数据库语言。关系数据库管理系统几乎都提供关系数据库标准语言__SQLoSQL的全称是StructuredQueryLanguage,印结构化查询语言。SQL语句可以从关系数据库中获得数据,也可以建立数据库、增加数据、修改数据。1986年ANSI采用SQL语言作为关系数据库系统的标准语言,后被国际化标准组织采
纳为国际标准。SQL语言使用方便、功能丰富、筒洁易学,是操作数据库的工业标准语言,得到广泛地应用。例如关系数据库产品DB2、ORACLE等都实现了SQL语言。同时,其它数据库产品厂家也纷纷推出各自的支持SQL的软件或者与SQL的接口软件。这样SQL语言很快被整个计算机界认可。SQL语言是一种非过程化语言,它一次处理一个记录集合,对数据提供自动导航。SQL语言允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL语言不要求用户指定数据的存取方法,而是使用查询优化器,由系统决定对指定数据存取的最快速手段。当设计者在关系表上定义了索引时,系统会自动利用索引进行快速检索,用户不需知道表上是否有索引或者有什么类型的索引等细节。SQL语言可以完成许多功能,例如:鲁查询数据•在数据库表格中插入、修改和删除记录•建立、修改和删除数据对象•控制对数据和数据对象的存取嚳确保数据库的一致性和完整性等SQL查询数据查询是关系运算理论在SQL语言中的主要体现,SELECT语句是SQL查询的基本语句,当我们在对一个数据库进各种各样的操作时,使用的最多的就是数据查询,在以SQL
为基础的关系数据库中,使用的最多的就是SELECT查询语句。SELECT语句的完整句法如下:SELECT目标表的列名或列表迗式序列FROM基本表和视图序列[WHERE行条件表达式][GROUPBY列名序列][HAHNG组条件表达式][ORDERBY列名[ASC|DEAC]我在SELECT语句中还使用了大量的保留字和通配符以进行各种各样的条件查询。在系统中有大量的查询按钮,其使用了大量的查询语句,而且这些查询语句大部分使用的是模糊查询,所以大量的使用了模式匹配符LHE(判断值是否与指定的字符通配格式相符)。在包含LIKE的查询语句中可以使用两个通配符:%:与零个或多个字符组成的字符串匹配;与单个字符匹配。系统中的条件判断往往包含多个条件,这时就需要使用逻辑运算符NOT、AND、OR(用于多条件的逻辑连接),谓词ALL以及保留字DISTINCT等等。做为SELECT语句还有很多的使用方法,这里就不再叙述。SQL数据更新使用数据库的目的是为了有效地管理数据,而数据的插入、删除和修改则是必不可少的一个功能。在本系统中就大量地使用了数据插入、删除和修改这三种操作,现做一个筒单地介绍。
•数据插入往数据库的基本表中插入数据使用的是INSERT语句,其方式有两种:一种是元组值的插入,另一种是查询结果的插入。在本系统中使用的是前一种方式,其句法如下:INSERTINTO基本表名VALUES眷数据删除往数据库的基本表中删除数据使用的是DELETE语句,其句法如下:DELETEFROM基本表名[WHERE条件表迗式]在些作一点说明,删除语句实际上是“SELECT*FROM基本表名[WHERE条件表迗式]”和DELETE操作的结合,每找到一个元组,就把它删除。此外,DELETE语句只能从一个基本表中删除元组,WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。•数据修改当需要修改基本表中元组的某些列值时,可以用UPDATE语句实现,其句法如下:UPDATE基本表名SET列名=值表迗式[,列名=值表迗式…][WHERE条件表达式]在Delphi中使用SQL语句是很方便的,一般来说,都是通过TQuery组件来使用SQL语言的。有一点要进行说明,
虽然通过TQuery组件来使用SQL语言很方便,但考虑到自己对不同组件的理解程度、个人习惯以及其它各个方面,在本系统中我采用的是ADO组件来对数据库进行操作。最简单的方法比如在TADOQuery组件的SQL属性中就可以键入SQL语句,至于详细的使用方法在后面进行介绍。类型的链接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口中,可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。ADO使您的客户端应用程序能够通过OLEDB提供访问和操作在数据库服务器中的数据。ADO支持用于建立C/S和Web的应用程序的主要功能。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序和Web页、在客户端对数据进行处然后将更新结果返回服务器的操作。Delphi继续对Microsoft的ADO访问能力的支持。这种能力是通过一组新组件实现的,这些组件是在企业版的ADO组件页中,在组件面版的ADO页上可以找到这些组件。利用在前面章节提到的TdataSet抽象类,ADO组件可以不通
过BDE而直接实现ADO连接。这意味着只需要很少的代码就可以实现该连接并且性能得到提高。利用ADO数据访问组件,可以只使用ADO结构与数据库取得联系并对其中的数据进行操作,而在这些过程中完全不需要使用BDE。大多数的ADO连接和数据集组件都是与基于BDE的连接和数据集组件相类似的。TADOConnection组件与基于BDE的应用程序中的Tdatabase组件类似。TADOTable与Ttable,TADOQuery与Tquery,以及TADOStoreProc和TstoredProc之间都具有这种类似的对应关系。使用这些ADO组件的方式与我们常使用的数据访问组件都有许多相同之处。TTADODataSet没有直接的BDE对应组件,但它提供了许多与Ttable和Tquery相同的功能。同样,TADOCommand也没有相对应的BDE组件,它是在Delphi/AD0环境中完成特定功能的组件。Delphi通过ADO数据集访问组件,可以不借助BDE数据引擎而是通过微软的OLEDB来访问更为广泛的数据库中的数据。ADO数据集访问组件与常用的数据访问组件是并列的关系。在系统中我主要使用的是ADOTablet和ADOQuery两个组件。数据控制类DataControl数据控制类负责数据库数据的显示,并把用户对数据的
修改传回。这里的绝大多数组件,如DBText,DBEdit,DBMemo,DBImage,DBListBox,DBComboBox,DBCheckBox,DBRadioGroup,DBLookupListBox,DBLookupCombox,DBCtrGrid的功能和对应的非数据感知组件相同,如TEdit框,TRadioGroups单选按钮组等,只不过在显示数据库数据时要用而已。在系统中主要使用数据网格控件DBGrid和数据库导航器控件DBNavigator。数据访问类DataAccess数据库应用系统中数据访问是一个首要问题,包括单用户和C/S系统,都必须联系一些数据库和数据表文件。Delphi6提供了专门用于数据访问的基类控件。主要包括数据源控件DataSource、客户数据集控件ClientDataSet、数据集提供器控件DataSetProvider等等。Tdatabase:当一个基于BDE的数据库应用程序需要一个永久数据库连接时,需要定制向一个数据库服务器的连接时,需要事务控制和特殊的数据库别名时就得用到Tdatabase对象。特别是当连接到一个远程的SQL数据库服务器时,如果要利用BDE进行数据库事务处理,那么,TDatabase对象的威力就体现出来了。在一个应用程序中为每一个数据库连接显示的声明Tdatabase对象要根据需要而定,不是必需的。对一个数据库连接,如果没有显示的声明并实例化
TDatabase对象,系统就会产生一个带有默认属性的TDatabase对象。TdataSource对象用于在DataSet对象和数据感知组件之间提供一个连接的纽带,以便在窗体上显示数据库中的数据,在数据库中导航定位与编辑数据集中的数据。如果一个DataSet对象中的数据想在数据感知组件中显示和修改,它就必须和TdataSource对象相联系。同样,一个数据感知组件如果想和数据源相联系以便显示和操纵数据,就必须以TDataSource对象为中介。用Delphi6作数据库应用开发概括来说如下:先利用数据存取组件和实际的数据库建立连接,并用Tsession对象和Tdatabase对象管理这些连接。然后以Tdatasource对象为中介,用数据感知组件向用户显示数据库的内容并接受用户的查询和修改等操作。SQL语言在Delphi中的应用在Delphi中使用SQL语言非常方便,一般来说,都是通过Tquery组件来使用SQL语言的。可以在TQuery组件的SQL属性中设置SQL语句。设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开StringListEditor对话框,然后我们就可以在对话框中添加SQL语句。还可以使用Delphi的SQLBuilder来自动生成SQL语句,这样可以避免手工编写SQL而可能造成的语法错误。
静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:Select*FromStudentsWhereStudentCode=:StudentCode;其中的变量StudentCode便是一个参数变量,它由一个冒号引导,在程序运行过程中,必须要为该参数赋值,该条SQL语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。为参数赋值有三种方法:①根据参数在SQL语句中出现的顺序,设置TQuery部件的Params属性值为参数赋值。②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。③将TQnery部件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TQuery部件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。利用这种方法也能实现所谓的连接查询,创建主要一明细型数据库应用。在程序运行过程中,要想设置TQuery部件的SQL属性,必须首先调用Close方法,关闭TQuery部件,然后再调用Clear方法清除SQL属性中现存的SQL命令语句,最后再调
用Add方法为SQL属性设置新的SQL命令语句。例如:{关闭Query1){清除SQL属性中的SQL命令语句}(‘Select*FromStudents‘);(‘WhereName=”Lucy"‘);在为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语句。在为TQuery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。在设计过程中,设置完TQuery部件的SQL属性之后将
其Active属性的值置为True,这样便可以执行SQL属性中的SQL程序,如果应用中有与TQuery部件相连的数据浏览部件(如TDDGridTDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果。在应用程序运行过程中,通过程序调用TQuery部件的Open方法或ExecSQL方法可以执行其SQL属性中的SQL程序。0pen方法和ExecSQL方法是不一样的。Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集,而ExecSQL方法还可以用来执行其它常用的SQL语句(如INSERT,UPDATE,DELETE等命令),例如:(这样会返回一个查询结果集)如果调用Open方法,而没有查询结果时,会出错。此时应该调用ExecSQL方法来代替Open方法。如:(没有返回结果)当然在设计应用程序时,程序设计人员是无法确定TQuery部件中的SQL语句是否会返回一个查询结果的。对于这种情况应当用Try…Except模块来设计程序。在Try部分调用Open方法,而在Except部分调用ExceSQL方法,这样才能保证程序的正确运行。Delphi中用ADOQuery来使用SQL语句同样十分方便。在ADOQuery组件中首先通过ConnectionString属性值来联接数据源,然后就通过双击SQL…属性值来写入SQL语句。
在Delphi中调用数据库,就可以调用ADOQuery组件,通过修改其中的SQL…属性中的SQL语句来实现对数据库的各项操作。值得注意的是,ADOQuery组件只有在激活的情况下才可以被正确地使用,这样就提出了一个问题,也就是说,在每次修改ADOQuery组件的SQL…属性时都必须先行进行关闭,待清除掉SQL…中所有的SQL语句后才可以添加新的SQL语句。而且,在每一次修改完成以后,还应该记得重新将ADOQuery激活。其它的使用方法与TTQuery有许多的相似之处。§Access简介建立一个数据库我们有多种选择,现在市场上有各种各样的数据库,而且每一种数据库都有其自身的特点,不能说哪一种更好,只能在其中寻找一种能更好地适应系统需求、更好地满足用户的要求以及适应开发人员的习惯。在本系统中,做为是一个比较小的应用系统,它所产生和处理的数据量也比较小。因此,没有必要使用像SQLServer和Oracle这样的大型数据库。我首先想到的数据库是Borland公司的Paradox数据库。另外,MicrosoftOffice中的Access数据库在计算机上的应用比较普及,是开发小型数据库系统的比较理想的选择,所以,在本系统中我选择了Access数据库。Access做为一个数据库管理系统,它被集成在MicrosoftOffice中。Access数据库处理的基本结构,采取
关系型数据库模式。与其他的数据库系统相比,Access更加简单易学,一个普通的计算机用户可以很快地掌握它。Access20⑻的功能十分强大,利用它可以方便地实现对信息保存、维护、查询、统计、打印、交流、发布,而且它可以十分方便地与Office其他组件交流数据,这些功能对一个一般用户而言已经足够了。子经过对系统的分析首先得到系统的顶层DFD,如下:§查询功能的实现查询功能包括员工信息查询,供应商信息查询,入库信息查询和出库信息查询。由于每一个功能的实现都差不太多而且其窗体也差不太多,所以在这里只给出员工信息查询窗体及其源代码。员工信息查询窗体procedure(Sender:TObject);Varsl,s2,s3:String;beginfile://员工记录查询窗体查找按钮事件withdobeginclose;(