版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章内容本章内容重点难点重点难点数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组第第10章章 Delphi的数据访问方法的数据访问方法Delphi7.0的的BDE组件组件、Delphi7.0的的ADO组件组件、数据库应用系统开发案例数据库应用系统开发案例Delphi的数据访问方法及使用的数据访问方法及使用数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组2学习目标学习目标u 了解了解:n Delphi的数据库管理功能;数据库应用系统开发工的数据库管理功能;数据库应用系统开发工具的使用及数据库应用程序的开发过程具的使用及数据库应用程序的开发过程。u 理解理解:n Delph
2、i的相关组件,以及访问数据库的相关接口技的相关组件,以及访问数据库的相关接口技术术。u 掌握掌握:n Delphi与与SQL Server数据库的连接方法;数据数据库的连接方法;数据库的编辑和查询操作等方法库的编辑和查询操作等方法。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组310.1 Delphi7.0的的BDE组件组件u 10.1.1 BDE组件页组件页u 10.1.2 TDatabase组件组件u 10.1.3 TTable组件组件u 10.1.4 TQuery组件组件数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组41. Delphi访问的数据库类型访问的数
3、据库类型(1)Jet数据库数据库(2)ISAM数据库数据库(3)ODBC数据库数据库2. Delphi数据库连接与访问数据库连接与访问数据库访问机制数据库访问机制数据库连接控件数据库连接控件BDETdatabase/通过BDE管理器ADOTADOConnectionDbExpressTSQLConnection数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组53. Delphi访问数据的接口访问数据的接口数据访问过程涉及三个组成部分:数据访问过程涉及三个组成部分:(1)数据提供者数据提供者(Data Provider)(2)数据服务提供者数据服务提供者(Data Service P
4、rovider)(3)数据使用者数据使用者(Data Consumer)n数据使用者和数据提供者之间的桥梁就是数据访问接数据使用者和数据提供者之间的桥梁就是数据访问接口对象。口对象。nDelphi的三种数据访问接口的三种数据访问接口n数据访问对象(数据访问对象(DAO)。)。n远程数据对象(远程数据对象(RDO)nActivcX数据对象(数据对象(ADO)n这些接口分别代表了数据访问技术的不同发展阶段。这些接口分别代表了数据访问技术的不同发展阶段。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组6组件组件组件基本用途介绍组件基本用途介绍TTable通过数据引擎,把数据表中的数据送至
5、TDataSource组件TQuery执行SQL语句TStoreProc允许应用程序接触服务器存储过程TDataBase建立一个与数据库的持久性联系TSession对你所应用的TDatabase组件提供全方位的支持TBatchMoveBatchMove用于复制一个数据库表格结构或者它的数据TUpdataSQL允许用户使用Delphi7.0的缓存数据的更新特性数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组7u对数据库进行访问之前必须使用对数据库进行访问之前必须使用TDatabase和数据和数据库进行相应的连接,再对数据集进行相应的操作。库进行相应的连接,再对数据集进行相应的操作。u
6、在下列场合需要用到在下列场合需要用到TdataBase组件:组件:(1)建立与数据库的永久连接)建立与数据库的永久连接(2)数据库服务器要求用户的登录)数据库服务器要求用户的登录(3)控制事务的处理)控制事务的处理(4)应用程序制定的)应用程序制定的BDE数据库的别名数据库的别名数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组8方方 法法含含 义义AliasName指明连接中的数据库的别名Connected标志联系是否有效DatabaseName指明与该TDatabase组件相连的数据库的名字DataSetCount指明与该TDatabase组件相连的数据库的数目DataSets给
7、出处于活动状态的所有数据集的索引数组Directory指明Paradox或dBASE数据库的工作路径DriverName指明数据库的BDE的驱动名ExclusIve使应用程序享有对数据库访问的专有权Handle指明BDE数据库的句柄数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组9事事 件件含含 义义HandleShared指明是否共享一个数据库的句柄InTransaction标志着数据库是否在事件处理中IsSQLBased指明该TDatabase组件使用的是BDE SQL Links driver还是BDEODBCKeepConnection指明在没有数据集打开的情况下,应用程序
8、是否保持与数据库的联系Locale指明该TDatabase组件的BDE语言驱动器LogInPrompt指明在建立联系时,是否显示标准的登录对话框Params包含联系中的参数信息SessionName指明该TDatabase组件使用的Session组件名Session指向与该TDatabase组件相连的Session组件数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组10事事 件件含含 义义ReadOnly指明此联系提供只读访问Temporary指明该TDatabase组件是否为暂时的TransIsoLation说明BDE控制database事务的独立等级nConnection属性
9、当Connection=True时,表明可以在不打开数据集的情况下与数据库相连。 当Connection=False时,表明TDataBase组件没有与任何数据库相连。nKeepConnection属性 当KeepConnection=True时,表示联系会被保持。nDataSets属性 应用程序可以通过使用DataSets属性值来访问与该TDatabase组件相连的所有处于打开状态的数据集。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组11u在在Delphi中,访问数据的基本单元是数据集对中,访问数据的基本单元是数据集对象。应用程序正是通过数据集组件来访问数据库象。应用程序正是
10、通过数据集组件来访问数据库的。的。u一个数据集对象就代表了数据库的一张表格,或一个数据集对象就代表了数据库的一张表格,或者是访问数据库的一个查询或者存储过程。者是访问数据库的一个查询或者存储过程。uTTable隶属于数据集组件,它从数据集继承而隶属于数据集组件,它从数据集继承而来,有着许多共同的属性、方法和事件。来,有着许多共同的属性、方法和事件。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组12事事 件件含含 义义DatabaseName表明数据集联系的数据库别名DBHandle表明数据集所在的数据库BDE的句柄DefaultIndex表明一个打开表格中的数据是否按默认的索引排
11、序Eof标志着记录指针是否停留在数据集的最后一个记录上Exclusive允许用户以专有的方式打开一个Paradox或dBASE表格Fields指向数据集的字段列表Filter表明当前数据集过滤的文本内容Filtered表明一个数据集的过滤是否被激活FilterOptions设置过滤选项Handle允许程序直接调用API函数数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组13事事 件件含含 义义IndexFieldName显示数据库表格所采用的索引排序的字段名IndexFields指出数据库中的字段名列表IndexName用来为数据库表格制定当前排列索引MasterFields在主表
12、中指定一个或者多个字段以建立主附表之间的联系MasterSource指定作为数据集主表的data source组件的名字Name该组件在被其他组件引用时的名字Modified标志着当前记录是否被修改ObjectView指明字段在Fields property中是层次排列还是平铺RecordCount显示与数据集相连的记录总数数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组14事事 件件 含含 义义RecordCount显示与数据集相连的记录总数ReadOnly明一个数据库表格在此应用程序中是否只读SessionName指定与数据集相连的Session的名字StoreDefs指出数据
13、库表格的字段和索引与数据模块一致,还是与窗体一致TableName指明该组件指向的数据库表格的名字TableStyle指出当前操作的数据表格的类型UpdateMode决定BDE如何在SQL数据库中查询更新记录UpdateObject指出在允许缓存更新时,用来更新只读记录的update object组件数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组15uActive属性属性 Active属性是用来说明数据库文件的打开状态。应用属性是用来说明数据库文件的打开状态。应用Active属性来决定及设定一个数据集组件数据库数据之间的联系。属性来决定及设定一个数据集组件数据库数据之间的联系。它
14、的属性值是一个布尔数(它的属性值是一个布尔数(True/False)来表示的。)来表示的。 可以通过下列方法设置可以通过下列方法设置Active的属性值为的属性值为True。 (1)触发数据集的)触发数据集的BeforeOpen事件事件 (2)设置数据集的状态为)设置数据集的状态为dsBrowse (3)在数据集中打开一个)在数据集中打开一个BDE记录指针记录指针 (4)触发数据集的)触发数据集的AfterOpen事件事件uDatabaseName属性属性 DatabaseName属性是用来说明当前数据集的来源,即应属性是用来说明当前数据集的来源,即应用程序所利用的数据库的名字。它可以是用程序
15、所利用的数据库的名字。它可以是BDE定义的数据库别名,定义的数据库别名,如如DBDEMOS;也可以是数据库文件,像;也可以是数据库文件,像Paradox和和dBASE等等文件所在的路径;还可以是由文件所在的路径;还可以是由TDataBase组件定义的数据库名组件定义的数据库名数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组16uTableName属性属性 它是用来说明这个它是用来说明这个TTable组件所对应的是数据库中的哪一张组件所对应的是数据库中的哪一张数据库表格。它和数据库表格。它和DatabaseName一样,实在设定阶段给定,它一样,实在设定阶段给定,它在在Databas
16、eName设定之后给出。设定之后给出。uFields属性属性 Fields属性是用来指出数据集的字段列表。应用属性是用来指出数据集的字段列表。应用Fields属属性可以访问数据库表格中的字段组合。性可以访问数据库表格中的字段组合。 对于用户来说,利用对于用户来说,利用Fields属性查询字段是非常有用的,有属性查询字段是非常有用的,有以下两点原因:以下两点原因: (1)可以重温数据集的部分或者全部字段。)可以重温数据集的部分或者全部字段。 (2)可以对运行时内部的数据结构未知的隐藏表格进行操作。)可以对运行时内部的数据结构未知的隐藏表格进行操作。uFilter属性属性 Filter属性允许用户
17、定义一个数据集过滤器。当过滤被数据属性允许用户定义一个数据集过滤器。当过滤被数据集应用时,只有那些满足过滤器条件的记录才会被显示。集应用时,只有那些满足过滤器条件的记录才会被显示。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组17事事 件件含含 义义AddIndex为数据库表格建立一个新的索引Append向数据集中添加一条新的空记录ApplyRange设定数据集的检索范围Cancel在对当前的记录的更改尚未提交时撤销它们ClearFields清除当前记录的所有字段内容Close关闭一个数据集Create产生一个数据库表格组件Delete删除当前记录,将记录指针指向下一条记录Cre
18、ateTable建立一个使用新的结构信息的表格EditKey将Table组件置于查询状态Edit允许用户编辑数据集中的数据数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组18事事 件件含含 义义FieldByName根据特定的字段名查找字段FindField在数据集中查询一个特定的字段FindKey查找包含特定字段值的记录GetFieldNames读取一个数据集中所有字段名的列表GetIndexNames读取数据库表格中有效的索引列表GotoKey将记录指针移至一条与当前查询值匹配的记录Insert向数据集中插入一条新的空记录Locate查找一条特定的记录并使之成为当前记录Move
19、By将记录指针置于数据集中与当前记录相关的一条记录处Open打开一个数据集数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组19事事 件件含含 义义Refresh从数据集中取得数据来更新数据集RenameTable对与此表格组件相关的Paradox或dBASE表进行更名操作SetFields设置一个记录中所有的字段值SetKey在查询前设定查询值和检索范围SetRange设置并应用一个检索范围的起始值和结束值SetRangeEnd指定检索范围的结束记录SetRangeStart指定检索范围的起始记录UnlockTable解除对Paradox或dBASE表格锁定UpdateRecord
20、对一个记录更新触发一个数据事件Post向数据集提交修改的记录数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组20 在在TTable组件中实现数据库记录的查询依靠组件中实现数据库记录的查询依靠EditKey、FieldByName、FindKey、FindNearest、GotoKey、GotoNearest、Locate以及以及SetKey这些方法。下面分别介绍前这些方法。下面分别介绍前5种具体的使用方法。种具体的使用方法。(1)EditKey 调用调用EditKey方法将数据集置于方法将数据集置于dsSetKey状态,也就是将状态,也就是将TTable组件置于查询状态。同时,存储
21、当前查询值缓冲区的当前内容。组件置于查询状态。同时,存储当前查询值缓冲区的当前内容。(2)FieldByName FieldByName函数的基本格式如下:函数的基本格式如下:function FieldByName(const FieldName:string):):TFiled; FieldByName方法是根据一个特定的字段名查询一个字段。方法是根据一个特定的字段名查询一个字段。FieldName是一个已存在的字段名。是一个已存在的字段名。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组21(3)FindKey FindKey函数的基本格式如下:函数的基本格式如下:funct
22、ion FindKey(const KeyValue:array of const):):Boolean; FindKey方法相当于将设置表格组件的查找状态、设置查询以方法相当于将设置表格组件的查找状态、设置查询以及在数据集中查询者三个步骤的功能集中在一个方法调用中实现。及在数据集中查询者三个步骤的功能集中在一个方法调用中实现。(4)FindNearest FindNearest方法与方法与FindKey方法很相似,不同之处在于方法很相似,不同之处在于FindNearest方法不要求精确查询。调用方法不要求精确查询。调用FindNearest方法将移动方法将移动记录指针到数据集中语查询值精确符
23、合的一个特定的记录或数据集中记录指针到数据集中语查询值精确符合的一个特定的记录或数据集中语查询值最相近的记录。语查询值最相近的记录。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组22(5)GotoKey 调用调用GotoKey方法可以用来查询一条特定的记录,查询值是方法可以用来查询一条特定的记录,查询值是已经用已经用SetKey或者或者EditKey方法与方法与Fields属性值确定了的。属性值确定了的。 下面举例说明下面举例说明GotoKey的使用方法:的使用方法:procedure TForm1.Button1Click(Sender:TObject);beginwith T
24、able1 dobeginEditKey; 将将Table1置于查询状态置于查询状态FieldByName(Country).AsString:=China; 设置查询值设置查询值FieldByName(City).AsString:=Beijing; 设置查询值设置查询值GotoKey; 执行查询过程执行查询过程end;end;数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组23uTQuery是一个建立在是一个建立在SQL基础上,专门用于对数据库中的数据进基础上,专门用于对数据库中的数据进行查询的组件。行查询的组件。TQuery组件使用的是组件使用的是SQL语言,可以一次访问数据
25、语言,可以一次访问数据库的一个或者多个表格。库的一个或者多个表格。TQuery组件访问的表格可以是在远程服务组件访问的表格可以是在远程服务器的数据库中(例如:器的数据库中(例如:Sybase、SQLServer、Oracle、Infomix、DB2和和InterBase),也可以上当地的表格(例如:),也可以上当地的表格(例如:Paradox、dBASE、Access和和FoxPro),还可以是),还可以是ODBC数据数据库。库。uTQuery组件的重要性体现在:组件的重要性体现在:(1)可同时访问多张表格)可同时访问多张表格(2)自动访问基本表格的子集,而不是访问所有的数据)自动访问基本表格
26、的子集,而不是访问所有的数据数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组24TQuery和和TTable组件同属于数据集组件,它们有着许多相似的地组件同属于数据集组件,它们有着许多相似的地方,但也有各自特殊的地方,下面为其主要区别:方,但也有各自特殊的地方,下面为其主要区别:(1)TQuery组件主要功能是用来支持组件主要功能是用来支持SQL语言访问本地或者远程语言访问本地或者远程数据库,所以,数据库,所以,TQuery组件提供了一系列与组件提供了一系列与TTable组件不同的属组件不同的属性、方法和事件。性、方法和事件。(2)TQuery组件允许用户同时访问多个表,而组件允许
27、用户同时访问多个表,而TTable组件一次只组件一次只能访问一个表格。能访问一个表格。(3)TQuery组件和组件和TTable组件以不同的方式与组件以不同的方式与SQL服务器进行服务器进行交互,在执行数据定义语句(交互,在执行数据定义语句(DDL)时,应当使用)时,应当使用TQuery组件,而组件,而在以非集中方式访问数据库时应当使用在以非集中方式访问数据库时应当使用TTable组件。组件。(4)TQuery组件访问的是表格中的特定数据内容;而组件访问的是表格中的特定数据内容;而TTable组件组件只有提供过滤或限定检索范围才能访问表格中的特定数据,否则只有提供过滤或限定检索范围才能访问表格
28、中的特定数据,否则TTable组件将访问表格中的全部数据。组件将访问表格中的全部数据。如前所述,如前所述,TQuery组件隶属于数据集组件,所有数据集组件具有的组件隶属于数据集组件,所有数据集组件具有的属性、方法和事件属性、方法和事件TQuery组件全部都有。组件全部都有。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组25事事 件件含含 义义Constrained表明Paradox和dBASE表格是否必须在用SELECT语句设定的范围内执行更新和插入操作DataSource指明引入当前字段值得datasource组件Local表明当前访问的是当地的Paradox或dBASE表格还
29、是远程服务器上的SQL表格ParamCheck表明在SQL属性在运行时发生改变后,查询的参数列表ParamCount表明当前查询参数的总数Params包含了用SQL语句查询的参数性质Prepared决定是否准备好执行一个查询数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组26事事 件件含含 义义RequestLive表明执行查询时,是否允许BDE及时返回应用程序对数据结果的修改RowsAffected返回上一次执行查询更新或删除的记录数SQL设置执行查询时所需的SQL语句SQLBinary用于BDE和TQuery的直接联系StmtHandle用于调用一些BDE的API函数Text用
30、于指明传递给BDE的SQL查询的实际内容UniDirection1决定在查询数据结果时,是否允许BDE的记录指针双向移动数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组27uDelphi7.0提供了一套采用提供了一套采用ADO的组件。利用这些组件,用户可以的组件。利用这些组件,用户可以与与ADO数据库相联系,读取数据库中的数据并执行相应的操作。数据库相联系,读取数据库中的数据并执行相应的操作。u大多数的大多数的ADO连接和数据集组件都是与基于连接和数据集组件都是与基于BDE的连接和数据集组的连接和数据集组件相类似的。件相类似的。TADOConnection组件与基于组件与基于BDE
31、的应用程序的的应用程序的TDatabase组件相类似。组件相类似。TADOTable与与TTable,TADOQuery与与TQuery以及以及TADOStroedProc和和TStroedProc之间都有这种类似的对应关系。之间都有这种类似的对应关系。u通过通过ADO数据集访问组件,可以不借助数据集访问组件,可以不借助BDE引擎而是通过微软的引擎而是通过微软的OLE BD来访问更为广泛的数据库中的数据。来访问更为广泛的数据库中的数据。ADO数据集访问组件数据集访问组件与常用的数据访问组件是并列的关系,由于与常用的数据访问组件是并列的关系,由于ADO数据集访问组件是数据集访问组件是从常用数据访
32、问组件发展而来,它的许多用法和常用数据访问组件从常用数据访问组件发展而来,它的许多用法和常用数据访问组件都是相同的都是相同的数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组28 TADOConnection组件被用于建立一个与组件被用于建立一个与ADO数据存储的连接。为了执行命令、获取数据数据存储的连接。为了执行命令、获取数据和操作数据,可以把多个和操作数据,可以把多个ADO数据集件和命令组数据集件和命令组件与一个件与一个TADOConnection组件关联以共享链组件关联以共享链接。这个组件与基于接。这个组件与基于BDE的程序中的的程序中的TDataBase组件类似,下面为其重要
33、的属性。组件类似,下面为其重要的属性。事事 件件含含 义义ConnectionString指明数据库连接信息的属性Connected用来说明一个与数据库的连接是否被激活ConnectionObject提供对ADO连接对象的直接访问ConnectionTimeout声明连接可能需要的最长时间数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组291. ConnectionString 通过设置通过设置ConnectionString来指明将来指明将ADO联系组件与数据联系组件与数据集相连的必要信息。集相连的必要信息。ConnectionString的属性值包含了一个或者的属性值包含了一个
34、或者多个变元。如果是包含多个变元,那么它们之间要用冒号分开。例如:多个变元。如果是包含多个变元,那么它们之间要用冒号分开。例如:ADOConnection1.ConnectionString:=Provider=SQLOLEDB.1;Integrated Security=SSPI; Persist Security in + fo=false; Initial Catalog=pubs; Data Source=JK在程序设计阶段,它可以通过激活对象观察器中该属性栏,从允许的在程序设计阶段,它可以通过激活对象观察器中该属性栏,从允许的ADO数据库连接中选取。该属性可以保存为文件后使用,在以后
35、使用数据库连接中选取。该属性可以保存为文件后使用,在以后使用时只要在该属性栏中指明此文件名就可以在此使用该值。该属性值也时只要在该属性栏中指明此文件名就可以在此使用该值。该属性值也可以包含用户的身份和密码信息。当采用可以包含用户的身份和密码信息。当采用Open方法或通过方法或通过ConnectionString显式的注册登录信息时,最好将显式的注册登录信息时,最好将LoginPrompt的属性值设为的属性值设为False,这样可以避免不必要的注册对这样可以避免不必要的注册对话框。话框。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组302. Connected 设置设置Connec
36、ted属性值为属性值为True以建立一个与以建立一个与ADO数据库之间数据库之间的联系而不打开一个数据集。将的联系而不打开一个数据集。将Connected设置为设置为False用来使一个用来使一个联系失效。联系失效。Connected的默认属性是的默认属性是False。 在应用程序中,可以通过检查在应用程序中,可以通过检查Connected属性值来判断一个联属性值来判断一个联系的当前状态。如果系的当前状态。如果Connected属性值为属性值为True,表明当前联系时处,表明当前联系时处于激活状态的。反之,如果于激活状态的。反之,如果Connected属性值为属性值为False,而另外一个,而
37、另外一个属性属性KeepConnection的值也为的值也为False的话,表明该联系处于中断状的话,表明该联系处于中断状态。态。3. ConnectionObject 提供对提供对ADO联系对象的直接访问。通过设置联系对象的直接访问。通过设置ConnectionObject属性可以取得参照属性可以取得参照ADO联系对象的直接联系。联系对象的直接联系。通过这种访问,应用程序可以直接使用与其对应的通过这种访问,应用程序可以直接使用与其对应的ADO联系对象的方联系对象的方法和属性。法和属性。 利用利用ConnectionObject属性对属性对ADO联系对象进行直接访问是联系对象进行直接访问是建立
38、在对建立在对ADO对象尤其是对象尤其是ADO组件充分熟悉的基础上的,所以使用时组件充分熟悉的基础上的,所以使用时要谨慎。要谨慎。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组314. ConnectionTimeout ConnectionTimeout是用来声明连接可能需要的最长时间,是用来声明连接可能需要的最长时间,该属性是一个整数,它的时间单位是秒,默认的值为该属性是一个整数,它的时间单位是秒,默认的值为15.如果在如果在ConnectionTimeout表示的时间之前联系成功或者调用了表示的时间之前联系成功或者调用了Cancel方法的话,方法的话,ConnectionTi
39、meout属性没有任何效用,但是如果一个属性没有任何效用,但是如果一个联系超过它规定的时间,它会终止联系的请求,并产生一个异常。联系超过它规定的时间,它会终止联系的请求,并产生一个异常。 当使用当使用TADOConnection组件与组件与ADO数据库联系时,首先使数据库联系时,首先使用用TADOConnection组件的组件的ConnectionString属性,属性,ConnectionString属性可以包含一系列的参数值,相互之间用冒号属性可以包含一系列的参数值,相互之间用冒号隔开,隔开,ConnectionString属性的值可以是包含一系列参数值的文件属性的值可以是包含一系列参数值
40、的文件名。这种文件名的内容与格式都与名。这种文件名的内容与格式都与ConnectionString属性值一样。属性值一样。ConnectionString属性和它的各种参数可以在程序中以字符串类型属性和它的各种参数可以在程序中以字符串类型进行设置,但更为常用的方法是在程序设计阶段通过激活对象观察器中进行设置,但更为常用的方法是在程序设计阶段通过激活对象观察器中该属性的对话框设定(双击该属性的对话框设定(双击ConnectionString属性栏或者单击属性属性栏或者单击属性栏中的省略号按钮)。栏中的省略号按钮)。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组32TADOComma
41、nd组件类似于基于组件类似于基于BDE的程序中的的程序中的TQuery的的Excute()方法和方法和TStoredProc的的ExecProc()方法。用来执行方法。用来执行SQL语句但不返回结果。在使用语句但不返回结果。在使用TADOCommand组件时,首先要确组件时,首先要确保已经连接上数据库,可以通过对象编辑器来编辑。保已经连接上数据库,可以通过对象编辑器来编辑。TADOCommand对应的是对应的是ADO中的中的command对象。对象。TADOCommand更通常的是用来执行更通常的是用来执行DDL SQL命令,或者执行命令,或者执行一个不需要返回结果的存储过程。对于那些不需要返
42、回结果的一个不需要返回结果的存储过程。对于那些不需要返回结果的SQL语语句,使用句,使用TADODataSet组件,组件,TADOQuery或者或者TADOStoredProc组件会更好。组件会更好。TADOCommand组件执行的命令是在组件执行的命令是在CommandText属性中说属性中说明的。如果有参数值的话,它们是在明的。如果有参数值的话,它们是在Parameters属性中说明的。通属性中说明的。通过调用过调用Excute方法执行命令。方法执行命令。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组33 TADOcommand组件可以通过组件可以通过TADOConnecti
43、on组件与数组件与数据库相连,也可以通过在自己的据库相连,也可以通过在自己的ConnectionString属性中说明连接属性中说明连接的信息与数据库取得联系。下面是的信息与数据库取得联系。下面是TADOCommand的一些重要属性的一些重要属性。(1)CommandText CommandText属性用来说明要使用属性用来说明要使用ADO操作组件执行的命操作组件执行的命令内容。令内容。CommandText属性值是文本形式的命令、如果操作中包属性值是文本形式的命令、如果操作中包含了一些参数(像在执行含了一些参数(像在执行SQL语句或者一个存储过程是的情况),我语句或者一个存储过程是的情况),
44、我们可以通过们可以通过Parameters属性值来设定。属性值来设定。(2)CommandType CommandType属性用来说明在属性用来说明在CommandText中说明的中说明的操作类型。操作类型。CommandType属性值应该与属性值应该与CommandText中所说中所说明操作相一致。当明操作相一致。当CommandText属性内容为数据表格名时,属性内容为数据表格名时,CommandType的属性值就应当为的属性值就应当为cmdTable或者是或者是cmdTableDirect。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组34 (3)CommandObject
45、 通过设置通过设置ConnectionObject属性可以取得与其相对应的属性可以取得与其相对应的ADO操作对象进行直接的联系。通过这种访问,应用程序可以使用与操作对象进行直接的联系。通过这种访问,应用程序可以使用与其想对应的其想对应的ADO操作对象的方法操作对象的方法 和属性。在没有与之对应的和属性。在没有与之对应的ADO操操作对象,而使用作对象,而使用TADOCommand组件与数据库相连时,这个属性显组件与数据库相连时,这个属性显得尤为重要。得尤为重要。 TADOCommand组件是用来执行对数据库的操作的。组件是用来执行对数据库的操作的。首先,在首先,在CommandText属性中说明
46、使用属性中说明使用ADO操作组件执行操作的操作组件执行操作的内容。在程序设计阶段,在对象观察器中通过内容。在程序设计阶段,在对象观察器中通过CommandText属性属性栏中输入命令(一条栏中输入命令(一条SQL语句,一个数据表或者一个过程名)。在运语句,一个数据表或者一个过程名)。在运行阶段,可以将行阶段,可以将CommandText属性值作为字符串类型数据设定。属性值作为字符串类型数据设定。如果有需要的话,可以在如果有需要的话,可以在CommandType属性中显式的定义执行操属性中显式的定义执行操作的类型。作的类型。CommandType属性包含的选项有:属性包含的选项有:(1)cmdT
47、ext(当执行的为一条(当执行的为一条SQL语句时)。语句时)。(2)cmdTable(当执行操作为一个数据表格时)。(当执行操作为一个数据表格时)。(3)cmdStoredProc(当执行操作问为一个存储过程时)。(当执行操作问为一个存储过程时)。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组35TADODataSet组件是用于获取和操作组件是用于获取和操作ADO数据的主要组件。该数据的主要组件。该组件可以操纵数据表、执行组件可以操纵数据表、执行SQL查询和存储过程并且能通过查询和存储过程并且能通过TADOConnection组件直接与一个数据存储建立连接。组件直接与一个数据存
48、储建立连接。TADODataSet是最常用的是最常用的ADO数据集组件。数据集组件。TADODataSet可可以从以从ADO数据库内读取一张或者多张数据表。这种读取可以是直接读数据库内读取一张或者多张数据表。这种读取可以是直接读取数据表格,也可以通过取数据表格,也可以通过SQL语句访问。在使用语句访问。在使用TADODataSet访问访问数据之前需要建立它与数据库之间的联系。数据之前需要建立它与数据库之间的联系。TADOQuery组件通过一个合法的组件通过一个合法的SQL语句或执行语句或执行DDL(Data Definition Language),例如),例如“Create Table”SQ
49、L语句来获语句来获取和操作数据集的元素,该组件可以直接连接到数据设备上或通过取和操作数据集的元素,该组件可以直接连接到数据设备上或通过TADOConnection组件连接到数据库设备上。组件连接到数据库设备上。通过通过TADOQuery组件的组件的SQL属性可以设计各种属性可以设计各种SQL语句,在该属语句,在该属性中不仅可以使用数据查询语句,还可以使用各种标准的数据结构话语性中不仅可以使用数据查询语句,还可以使用各种标准的数据结构话语句,如:句,如:DELETE、INSERT和和UPDATE等。等。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组36 数据库应用系统开发通常要针对
50、一个特定的数据库应用系统开发通常要针对一个特定的环境与目标,把与之相关的数据以某种数据模型进环境与目标,把与之相关的数据以某种数据模型进行存储,然后,按照一些特定的规则对这些数据进行存储,然后,按照一些特定的规则对这些数据进行分析、整理,以实现数据的存储、组织及处理。行分析、整理,以实现数据的存储、组织及处理。 本节以学生信息管理系统的开发为案例,以本节以学生信息管理系统的开发为案例,以Delphi7.0为开发工具,介绍为开发工具,介绍SQL Server数据数据库应用程序的实现过程与方法。库应用程序的实现过程与方法。 学生信息管理系统是一个非常通用的信息管学生信息管理系统是一个非常通用的信息
51、管理系统,很多大、中、小学校都需要自己的学生管理系统,很多大、中、小学校都需要自己的学生管理系统,以便对本校学生的基本信息和学习情况进理系统,以便对本校学生的基本信息和学习情况进行管理。要进行系统软件的开发,首先必须在行管理。要进行系统软件的开发,首先必须在SQL的企业管理器建立数据库。打开的企业管理器建立数据库。打开“企业管理企业管理器器”,然后再数据库右键后,点击建立数据库,既,然后再数据库右键后,点击建立数据库,既可以建立一个自己的数据库了,如图所示。可以建立一个自己的数据库了,如图所示。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组37 根据事先设计好的数据字典进行数据表
52、的创根据事先设计好的数据字典进行数据表的创建,例如学生表的数据字典如下表所示:建,例如学生表的数据字典如下表所示:字段名字段名代代 码码类类 型型约约 束束学号s_nochar(6)主键姓名s_namechar(10)非空性别s_sexchar(2)只取男、女出生日期s_birthdaydata入学成绩s_scorenumber(5,1)附加分s_addfnumber(3,1)班级编码class_nochar(5)与班级表中class_no外键关联数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组38 在数据库的表的选项中新建表,按照上述数据字典在数据库的表的选项中新建表,按照上述数
53、据字典进行表格属性的输入,例如主键的设定,参照性约束设进行表格属性的输入,例如主键的设定,参照性约束设定以及是否级联等。重复上述步骤,直至把相关数据表定以及是否级联等。重复上述步骤,直至把相关数据表输入数据库为止。输入数据库为止。 在数据库中建立表格之后,接下来在在数据库中建立表格之后,接下来在Delphi中进中进行前台界面的开发。行前台界面的开发。(1)新建工程和窗口,如图)新建工程和窗口,如图11.4所示:所示:数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组39(2)制作无数据库导入的基本界面,这一步是数据导)制作无数据库导入的基本界面,这一步是数据导入的铺垫,首先是把框架打
54、和空间选择好然后导入数据入的铺垫,首先是把框架打和空间选择好然后导入数据库就行了。例如控件库就行了。例如控件DBGrid,见图,见图11.5 DBGrid控控件:件:数据库技术与应用基础教材编写组数据库技术与应用基础教材编写组40(3)在)在Form中对相关的控件的属性进行设置,如中对相关的控件的属性进行设置,如DBGrid、DBEdit、Button、Label等等空间的属性进行设置,例如其数据源等等空间的属性进行设置,例如其数据源的属性,数据范围等等相关属性的操作。的属性,数据范围等等相关属性的操作。(4)进行数据库的导入,基于)进行数据库的导入,基于ADO快捷而方便的特点,本文使用的快捷而方便的特点,本文使用的数据源均用数据源均用ADO导入和链接,使用的主要控件是导入和链接,使用的主要控件是ADOConnection,ADOTable,ADOQuery。 数据库的导入首先要建立数据源:数据库的导入首先要建立数据源:(5)导入以后,在)导入以后,在DateSourse里的里的DateSet里选择要导入的数据里选择要导入的数据,然后就可以让控件来选择数据源,从而完成对数据的导入。,然后就可以让控件来选择数据源,从而完成对数据的导入。数据库技术与应用基础教材编写组数据库技术与应用基础教材编写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川光明能源发展集团有限公司公开招聘见习生笔试考试参考试题及答案解析
- 2026四川凉山州中西医结合医院招聘60人考试笔试备考试题及答案解析
- 2025山东青岛颐杰鸿利科技有限公司招聘3人考试笔试模拟试题及答案解析
- 2025浙江KT2025122301ZP0000宁波能源集团股份有限公司招聘1人笔试考试备考题库及答案解析
- 2026年江苏中医针灸学(相关专业知识)主治医师模拟练习题及答案解析
- 2026江西铜业建设监理咨询有限公司社会招聘1人考试笔试模拟试题及答案解析
- 2026年卫生专业技术资格考试中医针灸学主治医师(相关专业知识)模拟练习题及答案解析(甘肃陇南)
- 稀土永磁材料工安全专项测试考核试卷含答案
- 炭素煅烧操作工诚信道德水平考核试卷含答案
- 2025重庆大足区教育事业单位面向应届生考核招聘42人笔试考试参考试题及答案解析
- 骨盆骨折患者麻醉管理要点
- 2025贵阳人文科技学院教师招聘考试试题
- 高职院校产教融合共同体建设国内外研究动态及启示
- T/CWAN 0068-2023铜铝复合板
- 儿童寓言故事-乌鸦喝水
- 弱电系统维护中的安全和文明措施
- 紧急状态下护理人力资源调配
- 安全生产文明施工评价报告
- 眼科滴眼药水课件
- 2024-2025学年青海省西宁市七年级(上)期末英语试卷(含答案)
- 2025中级消防设施操作员作业考试题及答案(1000题)
评论
0/150
提交评论