1、浙大09春学期数据库应用程序设计期末考试复习指导浙大09春学期数据库应用程序设计期末考试复习指导一、卷面内容:1. 填空题,共10道题,20个空,每空2分,共40分;2. 选择题,单选,20道题,每题1分,共20分;3. 缩略语解释:如SQL,ADO等之类的名词进行解释;此类题,解答方式分为两个部分:首先要把缩略语的全称都写出来,之后要对缩略语进行解释。4. 编程题,共6道题,每题5分,共30分; 分为两种类型,一是代码的编写;给予命题,用代码来编写一段程序,实现此命题;二是阅读,用注释和说明的方式,解释关键语句的含义和整段代码的含义。5. 改错题,给一段代码或者不对或者用另外一种形式进行改写
2、等等说明:考试前5章,内容不做具体要求。也就是说,考试不会专门出前5章的内容,但是后面的内容会用到前面的内容,除非自己完全掌握了前面的内容,还是要看一下的。二、复习内容 1、为什么选择Delphi(1)数据库应用程序设计主要有哪些分类(2)各种数据库访问的主要特点怎样(3)为什么选择Delphi(4)支持.NeT-Delphi 开始支持.NET (5)跨平台 -Kylix集成环境与Delphi集成环境(6)独立的、独特的软件产品(7)简单易用2.Delphi 7访问数据库的基本方法 (1)BDE Borland Database Engine Borland公司开发的数据库引擎 把应用程序与具
3、体数据库隔开(2)ADO ActiveX Data Object Microsoft公司设计的数据访问计数 通过OLEDB底层数据访问接口,可以访问数据库、电子邮件系统及自定义的商业对象(如目录服务)3Delphi 7 质层的数据库类型 (1)dBase数据库。可通过Database Desktop建立(2)Paradox数据库。可通过Database Desktop建立(3)ASCII码文件(4)本地InterBase服务器(5)Access数据库(6)各种数据库服务器:主要有Microsoft SQL Server,Oracle Sybase,Interbase等(7)通过ODBC与其他数
4、据库连接4. 开发单层数据库应用程序的 方法 (1)在不使用BDE与BDE数据集,也不使用IAppServer接口的情况下,直接用数库文件作为数据源,在数据控制组件的配合下进行数据库应用程序开发,成为基于文件的单层数据应用程序。(2)提供了TClientDataSet组件用于实现此种数据库应用程序。(3)使用场合较少5. 开发两层数控应用程序的方法 (1)基于 BDE的两层数据库应用程序 客户机需要安装BDE Borland对BDE的分布不限制,不收费 (2)基于ADO的两层给数据库应用程序 需要安装MDAC(Microsoft Data Access Components) Delphi 7
5、 自带MDAC MDAC包括DAO(数据存取对象)、RDO(远程数据对象)、ADO(ActiveX数据对象)、ODBC(开放数据库连接)、RDS(远程数据库服务)等 4. 基于ADO的两层数据库应用程序体系结构 虚线以上为客户机端,虚线以下为服务器端基于DataSnap技术的多层数据库应用程序配置BDE,dbExpress等数据访问功能只需在应用服务器上进行,而与客户机无关。逻辑三层结构的数据库应用程序 数据模块包括TDataSet,TQery,TStoredProc三个组件。ODBC的概念(1) 各DBMS定义的SQL无需完全相通(2) 访问不同的DMBS,须采用不同的SQL语句(尽管差别不
6、大),但最小的差别也可能导致语句解释问题(3) 微软推出ODBC(Open Database Connectivity),开放数据库互联(4) 应用数据通信方法、数据传输协议、DBMS等多种技术定义一个标准的接口协议,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据。(5) ODBC提供API(Application Interface)数据源与ODBC练级(1) 创建数据库源名DSN(Data Source Name)(2) 选择DSN类型(3) 创建ODBC名称,以备引用(4) 选择登录方式(5) 输入登录用户名和口令(6) 选择ODBC 控制的数据库(7) 确定配置完成(8
7、) 测试连通(9) 完成配置开发多层数据库应用程序的方法(1) 基于DataSnap技术的多层数据库应用程序 原先称MIDAS技术 多了应用服务器,可运行数据提供者 客户机不需要BDE等环境(2) 基于Business Broker Serve 技术的多层数据库应用程序(3) 逻辑三层结构的数据库应用程序 不是真正意义的三层数据库应用程序 数据库模块运行时位于客户端6. ODBC的部件及其层次关系(1) 数据源通过ODC管理器注册的一个数据源名称,应用程序数据源名就可访问具体的数据库,而使中间的细节变得透明。(2)应用程序(Application) 负责调用ODBC函数来提交SQL语句,提取结
8、果。(3)ODBC管理器(Administrator) 位于Windows控制面板的32位ODBC内,其主要任务是管理ODBC驱动程序和数据源。使用Database Desktop 进行数据库管理(1) Database Desktop的作用(2) 工作目录和私有目录的设定(3) 数据库别名的建立(4) 数据库表的建立Database Desktop的作用(1) Database Desktop(数据库桌面)是Delphi自带的一个数据库管理工具,利用它可以完成数据库的创建和维护、别名的创建和维护,SQL文件的创建及SQL命令的执行等功能。(2) 创建和维护数据库需安装相应的数据库管理系统或驱
9、动程序,像Paradox、dBase等自带数据库可以是一个文件(Access),也可以是一个目录(如Paradoc)(3) 维护数据库别名数据库别名就是数据表所在的子目录或数据库文件名的替代名称,可以隐藏数据库所在的路径的文件名称(4) 创建SQL文件和执行SQL命令可建立和执行QBE查询主界面划分Delphi程序运行界面Object Inspector(对象观察器)(1) 设置属性(2) 编制控件的事件代码7. Object TreeView(对象树浏览器)(1) 观察对象层次关系(2) 明确对象引用关系Form1.Button1Form1.DBGrid18. 组件模块及组件设置 用BDE组
10、件开发的一般方法9. 常用BDE组件简介TTable组件(1)TTable组件的常用属性(2)TTable组件的常用方法(3)TTable组件的常用事件21. TTable组件的常用属性 DatabaseName:用于指定所连接的物理数据库的名字,可以是数据库别名、数据库表文件所在路径。 TableName:用于设定所操作的数据表的名称,若DatabaseName正确设置,则有列表框列示相应数据库中的所有表。 TableType:用于设定与之连接的确良数据库表的类型,当其值为ttDefault时,数据库表类型与文件扩展名关联。 Active:打开(True)或关闭(False)Ttable组件
11、形成的数据集合,是逻辑型属性。 ReadOnly:用于决定数据集是否可修改(True为只读),逻辑型属性。 Modified:只读逻辑型属性,只在程序运行中使用,表示数据集是否修改过。 FieldCount:只读属性,用于返回所连接表中的字段个数。 RecordCount:只读属性,用于返回所连接表中的记录个数。 RecNo:只读属性,用于返回当前记录号,即记录指针位置。 RecordSize:只读属性,用于返回记录的长度。 Fields:数组属性,用于访问数据集中的字段,Fields0表示第一个字段,Fields1表示第二个字段,以此类推。也可用FieldByName引用字段。 Bof:只读
12、逻辑型属性,用于表示是否指向数据集的第一条记录。 Eof:只读逻辑型属性,用于表示是否指向数据集的最后一条记录。 Filter:用于确定过滤器字符串,数据集中所有符合过滤条件的记录才能被访问。例:职称=讲师 CachedUpdates:用于决定是否对数据集应用缓存更新。TTable组件的常用方法(1)FieldByName方法(2)记录指针移动方法a) First方法b) Last方法c) Prior方法d) Next方法e) MoveBy方法(3)查询记录的相关方法f) GotoKey g) FindKey 10. 数据操作相关方法a) Append方法b) Insert方法c) Edit方
13、法d) Post方法e) Refresh方法11. TTable组件的常用事件(1)BeforeXXX事件(2)AfterXXX事件(3)OnXXX事件24.查询记录的相关方法 GotoKey 精确查找 确保要查找的字段是关键字或已经为它定义了辅助索引,并保证TTable组件的属性列表中有关键字段名或辅助索引名。 通过调用GotoKey方法,把要查找的Table组件置成查找模式。 把查找值送进被查找的Field的查找缓冲区。 调用TTable组件的GotoKey方法,并测试它的返回值以判断查找是否成立。 True:定位记录指针;False:记录指针不变 GotoNearest方法用于模糊查找
14、FindKey Function FindKey(Const KeyValues: array of const):Boolean; FindNearest用于模糊查找25.数据操作相关方法 Append方法 在数据表的末尾追加一条空记录,并将记录指针指向该记录 Insert方法 在当前记录之后插入一条空记录,并将记录指针指向该记录 Edit方法 将数据表置于编辑状态,此时用户可以修改数据表中的数据 Delete方法 删除当前记录,并将指针移向下一条记录 Post方法 把对数据表数据的修改结果和新添加的数据保存到数据库中 Refresh方法 根据数据表中的数据刷新界面,即重新从数据表中获取数据
15、 Cancel方法 取消对数据表中修改和添加 EmptyTable 将数据表清空,即删除数据表中的所有记录26. BeforeXXX事件 BeforeCancel:取消操作之前触发,调用Cancel方法第一个动作 BeforeClose:关闭数据集之前触发 BeforeDelete:删除操作之前触发,调用Delete方法的第一个动作 BeforeEdit:数据集置为编辑状态前触发,调用Edit方法的第一个动作 BeforeInsert:插入或添加前触发,调用Insert或Append方法的第一个动作 BeforeOpen:数据集打开前触发 BeforePost:更新操作之前触发,调用Post方
16、法的第一个动作27示例说明 删除的完整性验证:如果必修课成绩表中有当前学生的选课,则不允许删除当前记录(限制删除)。 问题:如果要达到级联删除的效果,怎么做? 提示功能:当执行Post成功后,将显示“保存成功”的提示信息 Procedure Tform1.tableBeforeDelete(DataSet: TDataSet); Begin try table2.indexName := XH; /学号作业索引名 if table2.findkey(DataSet.fieldbyname(学号).Asstring) then raise Exception.Create(不能删除记录); ex
17、cept on E:EDBEngineError do showmessage(不能删除该记录); end; End; Procedure Tform1.table1AfterPost(DataSet: TDataSet); Begin showmessage(数据保存成功);End;28数据控制组件 常用属性和使用方法 常用数据控制组件介绍 TDBNavigator组件 TDBGrid组件 TDBListBox/TDBComboBox组件 TDBLookUpListBox组件 TDBLookUpComboBox组件 TDBImage组件 TDBCheckBox组件 TDBRadioGroup
18、组件29常用属性 要使数据控制组件显示数据库表的内容,一般只需要设置两个属性: DataSource:设置与本组件相连的TDataSource组件。可以在属性设置栏内选择当前Form可引用的所有TDataSource组件。 DataField:决定数据控制组件显示或修改的字段名,在确定数据源后(DataSource值设置后),即可在列表框中选择所有指定数据集中的字段。30 TDBLookUpListBox组件 重要属性 ListSource:设置查找记录集,列表中的数据包含在该数据集中 ListField:设置查找字段,该属性可以是查找记录的一个或多个字段,如果是多个字段,则字段名之间用“;”
19、隔开。列表中填充的值来自于该属性指定的字段,如果不设置,KeyField指定的字段在就是查找字段 KeyField:用来从ListField属性选一个字段作为当前表和被查找表之间的查找匹配字段。如果没有设置ListField属性,该属性还兼有设置查找字段的功能 功能与TDBLookUpListBox组件功能基本一致,只不过它是一个下拉框组件。 适用于外码值输入31 TDBImage组件 用于显示图像字段内容 重要属性 DataSource DataField Stretch:逻辑型属性,确定图像是否适应显示组件的大小32 TDBCheckBox组件 重要属性 ValueChecked:字符串属
20、性,当字段内容与该属性匹配时,该组件被选中 ValueUnchecked:字符串属性,当字段内容与该属性值匹配时,该组件被清除 可以进行多值匹配,用“;”隔开 DBCheckBox1.ValueChecked := True;Yes;正确;是;是的; 如果是以上设置,则字段的值只要是“True”、“Yes”、“正确”、“是”、“是的”中的一个,则DBCheckBox1组件将显现选中状态 Delphi7规定,在多值情况下,只向数据库传回匹配列表中的第一个值33 TDBRadioGroup组件 用于为单选按钮分组。当组中的一个单选按钮被选中时,同组的其他所有单选按钮处于未被选中状态 重要属性 Co
21、lumns:设置排列单选按钮的列数,默认值是1,表示以一列的形式显示单选按钮 Items:设置单选按钮显示的文字,在“String List Editor”中每行表示一个单选按钮的提示文字(即单选按钮的名称) Values:设置单选按钮的值,与Items类似 该组件可确保用户为字段输入一个值,也可用于显示取值有限的字段33. 主从表数据库应用程序的编写方法 在一对多关系中,一方为主表,多方为从表。 编写主从表应用程序,需要设置TTable组件的两个属性:MasterSource和MasterFields。前者指定作为主表的数据源,后者指定联系字段。34通过程序创建数据库表 涉及TTable组件
22、的两个属性和一个方法 FieldDefs:列表属性,定义字段 IndexDefs:用于表的索引定义的列表 CreateTable:根据字段和索引的定义创建数据表35 TTable组件编程综合实例 功能要求 建表,对该表进行浏览和管理,不使用数据控制组件 按钮的功能实现和状态设置:记录指针移动;数据集增、删除、改、查询;提交和撤销。状态设置确定按钮可用与否。 设计要点 由于不使用数据控制组件,需要编程显示数据集信息,并在适当时候写回数据库。写两个过程分别用来显示当前记录,保存当前记录。 采用FindKey方法查询 按钮不可用,可使用button1.enabled=false;来实现 界面上的组件
23、能否输入数据可通过设置其ReadOnly或Enabled属性来实现。分别写两个过程,一个令界面上组件不能输入,一个令界面上的组件能够输入。36. 其他BDE组件 TStoredProc 用于在基于BDE的数据库应用程序中访问数据库服务器的存储过程 存储过程:数据库服务器的一段程序。并不是所有数据库服务器都支持存储过程,且各数据库的存储过程的编写也各有不同 TDatabase 用于建立与数据库之间的联系,并对数据库进行控制。适用于: 建立与数据库的永久连接 数据库服务器要求用户的登录 控制事务处理 应用程序指定的BDE数据库别名 在应用程序中,显式地为每一个数据库连接声明TDatabase组件不
24、是必需的,若不声明的话,系统将生成一个带有默认参数的TDatabase对象。37示例 设置存储过程名称 设置存储过程的参数38 TDatabase组件 常用属性 AliasName:用于指明连接数据库的BDE别名。设置该值,会将原先赋予DriverName的属性值被清空。如果BDE数据库别名不存在,应用程序可通过指明数据库的DatabaseName、DriverName、Params属性来代替。 Connected:用于确定数据库连接是否是活动的。 DatabaseName:用于指定所用的数据库的名字。若DatabaseName与已存在的BDE别名相同,则AliasName属性与DriverN
25、ame属性不用设置;若不同,则应用程序可设置AliasName属性以指定数据库别名,也可设置DriverName与Params属性来指定驱动程序名和数据库的连接参数。 Exclusive:确定当前的应用程序可否独占访问数据库。 KeepConnection:确定在没有数据集打开的情况下应用程序是否保持数据库连接。 常用事件 ApplyUpdates:向数据库服务器提交当前数据集的缓存更新,只在数据集的CachedUpdates属性为True时有意义。 Close:中断与数据库服务器的连接,并释放系统所占的资源,设置Connected值为False时同效。注:当KeepConnection值为F
26、alse时且当前没有打开状态的数据集时,Close被自动调用。 Commit:用于提交事务,即永久保存当前事务的所有更新操作结果 Rollback:用于撤销事务,即撤销当前事务的更新操作,并结束事务 StartTransaction:用于在数据库服务器开始一个新的事务39 TQuery组件的作用 支持SQL语言的使用 是BDE组件,作用与TTable组件基本一致 不与具体的数据库表联系 执行SQL语句,操作一个或多个表 传递SQL语句到指定DBS的数据库引擎40 TQuery组件的属性和方法 常用属性 DatabaseName SQL Active Filter 常用方法 Open ExecS
27、QL ClosePrepare41 DatabaseName属性 用于与数据库建立连接,可以是某个数据库别名或数据表所在的路径。43 SQL属性 字符串属性,存放用于执行的SQL语句 输入合法的SQL语句后,将TQuery的Active属性置为True,或者调用其Open/ExecSQL方法来执行 SQL属性可通过Add、Clear等方法来操作 Add Clear44. SQL属性的Add方法 语法Query.SQL.Add(SQLState); 说明 Query为TQuery组件的实例名 SQLState为SQL语句的字符串形式 例Query1.SQL.Add(SELECT * FROM S
28、tudents);Query1.SQL.Add(WHERE Cno=01); 等效形式Query1.SQL.Add(SELECT * FROM Students WHERE Cno=01); 45 SQL属性的Clear方法用于清除SQL属性的值 TQuery组件可能被多次使用,为避免语句间的干扰,在输入SQL语句前使用 例 Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(SELECT * FROM Students WHERE Cno=01); Query1.Open;46. Active属性 用于执行SQL属性中存放的SQL语句 保证SQL属性
29、已经设置 保证DatabaseName属性已经设置 SQL语句语法正确47. Filter属性 字符串属性 为数据集过滤器,存放逻辑表达式,只有符合逻辑表达式的记录才会出现在数据集中 格式 Query1.Filter := 字段名=字段值 例:筛选出职称为讲师的记录(以下示例适合出现在程序代码中) Query1.Filter := 职称=讲师; 注意 Filter属性要起作用,必须将Filtered属性置为True在对象浏览器中设48常用方法 Open 打开或激活TQuery组件的数据集 SQL属性中存放的是SQL查询语句 返回数据集 ExecSQL 执行SQL属性中的SQL语句 用于执行SELECT查询时不返回数据集 能够执行INSERT、UPDATE、DELETE等 Close 关闭数据集 Prepare 将带参数的SQL语句传递给相应的数据库引擎 大大提高动态SQL语句的执行性能 49关于Close方法什么时候关闭数据集? 数据集占用内存空间,当不使用数据集时及时关闭 当TQuery组件派另外作用时,应先关闭先前的数据集(如果有的话) 有些方法只能对打开的数据集
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1