1 / 57

第 9 章 用 DAO 操作数据库

第 9 章 用 DAO 操作数据库. 本章要点:  DAO 对象模型  DAO 的各种对象的属性和方法  DAO 的各种对象的创建与使用  事务处理的概念和在 DAO 中实现事务处理的方法  错误处理的概念与错误处理的方法. 9.1 DAO 体系结构与对象模型. 9.1.1 DAO 体系结构. 1 . VB 的用户界面和程序代码 VB 的用户界面是应用系统用来与用户进行交互的界面,主要以窗口的形式出现,用于显示数据供用户查看或修改。 2 . DAO 数据库引擎

vesta
Download Presentation

第 9 章 用 DAO 操作数据库

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章用DAO操作数据库 • 本章要点: • DAO对象模型 • DAO的各种对象的属性和方法 • DAO的各种对象的创建与使用 • 事务处理的概念和在DAO中实现事务处理的方法 • 错误处理的概念与错误处理的方法

  2. 9.1 DAO体系结构与对象模型 9.1.1 DAO体系结构

  3. 1.VB的用户界面和程序代码 VB的用户界面是应用系统用来与用户进行交互的界面,主要以窗口的形式出现,用于显示数据供用户查看或修改。 • 2.DAO数据库引擎 数据库引擎存在于应用程序和物理数据库文件之间,把用户程序和正在访问的特定数据库隔离开来,从而实现应用程序对数据库的“透明”操作。 • 3.数据库 数据库是包含数据库表的一个或多个文件。

  4. 9.1.2 DAO对象模型 • DAO是一个分层的面向对象的数据访问模式,它把对于数据库的操作分为若干层次,每一个层次为一类对象,具体的对象及分层关系如图:

  5. 9.1.3 加载数据访问对象DAO • 要使用DAO,首先必须把该对象加载到Visual Basic的工程中,加载方法为:执行【工程】→【引用】命令,将会出现如图9-3所示的“引用”对话框,在该对话框中选中相应的Microsoft DAO对象库,图9-3选中的是“Microsoft DAO 3.6 Object Library”。 • 把“Microsoft DAO 3.6 Object Library”加载到工程中后,就可以使用DAO进行数据库编程了。

  6. 9.2 DBEngine对象 9.2.1 常用属性 1.DefaultType属性 2.DefaultPassword 3.DefaultUser 4.IniPath 5.LoginTimeout 6.SystemDB 7.Version

  7. 9.2.2 常用方法 1.CreateWorkspace方法 使用格式如下: Set 工作区变量名= CreateWorkspace(name, user, password, type) 2.RepairDatabase方法 该方法的格式如下: DBEngine.RepairDatabase dbname 3.CompactDatabase方法 该方法的格式如下:DBEngine.CompactDatabase olddb, newdb, local, options, password

  8. 【例9-1】对当前目录下的“教学”数据库进行压缩,要求压缩后的数据库还是原来的数据库名。 分析:使用CompactDatabase方法可以压缩数据库,但该方法产生的压缩后的数据库为另一个数据库名。可在压缩后,用压缩后的数据库去覆盖原来的数据库,再把压缩后的数据库删除。

  9. 9.2.3 集合对象 DBEngine对象包含的主要集合对象有:Rrrors(错误集合)、Properties(属性集合)、Workspaces(工作区集合)。 【例9-2】列出DBEngine对象的所有属性的工作区。 分析:可通过FOR……EACH……IN循环输出DBEngine的Properties集合中的每个属性的属性名,同样可输出DBEngine的Workspaces集合中的每个工作区对象的名称。

  10. 例9-2程序运行结果

  11. 9.3 WorkSpace对象 9.3.1 常用属性 1.Name属性 该属性用来设置或返回工作区对象的名字。 2.UseName属性 该属性用来设置或返回Workspace对象的拥有者。 3.Type属性 该属性用来指明Workspace对象操作的数据库类型。 4.IsFrozen属性 表示工作区是否被锁定,为Boolean属性,总是取值False,因为无法锁定一个工作区。

  12. 9.3.2 常用方法 1.CreateDatabase方法 该方法的格式如下:Setdatabase=workspace.CreateDatabase(name,locale,options) 【例9-3】在当前目录下建立一个名为“人员管理”的数据库。

  13. 2.OpenDatabase方法 该方法的格式为: Setdatabase=workspace.OpenDatabase(name,options,read-only,connect) 【例9-4】以独占且可读可写方式打开当前目录下的名为“教学”的数据库。

  14. 9.3.3 连接到数据库 1.用Microsoft Jet 数据库引擎进行连接 【例9-5】使用Microsoft Jet 数据库引擎分别打开Access数据库和“SQLPubs”数据源的Pubs数据库。程序设计界面如9-4所示。

  15. 2.用ODBC Direct进行连接 【例9-6】使用ODBC直接与系统数据源“SQLPubs”的Pubs数据库相连。程序的设计界面如图9-6所示,程序的运行界面如图9-7所示。

  16. 9.4 Database对象 9.4.1 常用属性 1.CollatingOrder属性 2.Name属性 3.RecordsAffected属性 4.Updatable属性 5.V1xNullBehavior属性 6.QueryTimeout属性

  17. 9.4.2 常用方法 1.Close方法 2.Execute方法 3.OpenRecordset方法 4.CreateTableDef方法 5.CreateQueryDef方法 9.4.3 常用集合对象 最常用的集合对象有QueryDefs和TableDefs。其中Containers代表的是字段集合,Indexes代表的是索引集合,QueryDefs代表的是查询集合,TableDefs代表的是表集合。

  18. 9.5 TableDef和TableDefs对象 9.5.1 TableDef对象及其创建方法 创建TableDef对象,可使用Database对象的CreateTableDef方法,该方法的格式如下: Settabledef=database.CreatTableDef(name,attributes,source,connect) 9.5.2 TableDef对象的常用属性 1.Attributes属性 2.ValidationRule属性 3.ValidationText属性 4.Name属性

  19. 9.5.3 TableDef对象的常用方法 1.CreateField方法 2.CreateIndex方法 3.OpenRecordset方法 9.5.4 TableDefs对象的常用属和方法 1.Append方法 格式如下:TableDefs对象名.Append TableDef变量名 2.Delete方法 格式如下:TableDefs对象名.Delete Tablename

  20. 【例9-7】设计一个显示表名和删除表的程序。程序的设计界面如图9-8所示。程序运行时把当前目录下的教学数据库中的所有表名显示在列表框List1中,在Text1文本框中显示表的数量。在列表框中选中一个表名后,单击“删除”按钮将删除对应的表。 题意分析:为了在运行时在列表框中显示数据库中的所有表名,可通过一个For Each…In循环,把数据库的TableDefs集合中的每个TableDef对象的Name属性添加到列表框中,为显示TableDef中表的数量,可使用TableDefs的Count属性,为删除表,可使用TableDefs和Delete方法。

  21. 9.6 Field和Fields对象 9.6.1 Field对象及其创建方法 添加字段的一般方法为: (1)关闭所有基于该表的记录集; (2)用表对象的CreateField方法创建一个新的Field对象; (3)用字段集合对象Fields的Append方法把新建的Field对象加到Fields集合中。 TableDef对象的CreateField方法的格式如下: Setfield=tabledef.CreateField(fieldname,fieldtype,fieldsize)

  22. 【例9-8】在当前目录下创建一个新数据库“图书管理.mdb”,并为该数据库创建一个名为“图书”的表,该表由三个字段组成:书号(文本型,15位)、书名(文本型、20位)、单价(整型)。

  23. 9.6.2 Field对象的常用属性 1.AllowZeroLength属性 2.Attributes属性 3.DataUpdatable属性 4.DefaultValue属性 5.FieldSize属性 6.Name属性 7.OrdialPosition属性 8.Required属性 9.Size属性 10.Type属性 11.ValidationRule属性 12.ValidationText属性 13.ValidateOnSet属性

  24. 9.6.3 Fields对象的常用属性和方法 1.Append方法 具体的使用方法如下:OFields.Append oField2.Delete方法 具体的使用方法如下:OFields.Delete Fieldname 【例9-9】设计一个显示和删除数据库中的表和字段的程序。程序的设计界面如图9-12所示。程序运行时,把当前目录下名为“教学”数据库中的表名显示在List1列表框中,把表的数量显示在文本框Text1中,在List1中单击选中表名时,将把选中表的所有字段名显示在列表框List2中,选中表的字段数显示在文本框Text2中。此时若按“删除表”按钮将删除选中的表,按“删除字段”按钮将删除选中的字段。

  25. 题意分析:显示数据库中的表名、表的数量及删除表的方法可参见例9-7。为在运行时在列表框中显示选中表的所有字段名,可通过一个For Each…In循环,把表的Fields集合中的每个Field对象的Name属性添加到列表框中,为显示Fields中字段对象的数量,可使用集合对象Fields的Count属性,为删除字段,可使用Fields对象的delete方法。

  26. 9.7 Index和Indexes对象 9.7.1 Index对象及其创建方法 创建索引可使用TableDef对象的CreateIndex方法来实现,该方法的使用格式如下: Set index=tabledef.Createlndex(name) 可使用索引对象的CreateField方法来创建索引字段,该方法的使用格式如下: Set IndexField=Index.CreateField(name) 为表创建索引一般要经过以下步骤: (1)调用表对象的CreateIndex方法创建索引名; (2)为该索引对象创建索引字段,有几个字段就创建几个字段; (3)调用索引对象下的集合对象Fields的Append方法,把索引字段依次添加进索引对象的Fields集合中; (4)调用表的索引集合的Append方法把索引对象添加到表的索引集合Indexes中。

  27. 【例9-10】为例9-8创建的数据库“图书管理”中的表“图书”创建一个名为SM的索引,该索引按字段“书号”进行升序索引。 题意分析:首先要打开相应数据库中的相应表,然后按照创建索引的步骤为相应表创建索引。

  28. 9.7.2 Index对象的常用属性 1.DistinctCount属性 2.Foreign属性 3.IgnoreNulls属性 4.Name属性 5.Primary属性 6.Required属性 7.Unique属性

  29. 9.7.3 Index对象的常用方法 Index对象的常用方法有CreateField,该方法用来创建索引字段,使用方法见9.7.1。 9.7.4 Indexes对象的常用属性和方法1.Append方法具体的使用方法如下: Oindexes.Append oindex 2.Delete方法具体的使用方法如下: OIndexes.Delete Indexname

  30. 题意分析:显示数据库中的表名、表的数量及删除表的方法可参见例9-7。为在运行时在列表框中显示选中表的所有索引名,可通过一个For Each…In循环,把表的Indexes集合中的每个Index对象的Name属性添加到列表框中,为显示Indexes中索引对象的数量,可使用集合对象Indexes的Count属性,为删除索引,可使用Indexes对象的delete方法。

  31. 9.8 QueryDef和QueryDefs对象 9.8.1 QueryDef对象及其创建方法 要创建QueryDef对象,可使用Database对象的CreateQueryDef方法。该方法的使用格式如下: setOQueryDef=ODatabase.CreateQueryDef(QueryDefname,Sqlstr)

  32. 【例9-12】为当前目录下的“教学”数据库创建三个查询,查询名称分别为:“自动化学生”、“学生必修课”和“课程01”。其中“自动化学生”查询的功能是“列出自动化专业的全部学生的学号、姓名和年级”,“学生必修课”查询的功能是“查询出所有学生的必修课的学习情况,查询结果中包含学号、姓名、课号和成绩”,“课程01”查询的功能是“列出选修‘01’号课的学生姓名及成绩”。

  33. 9.8.2 QueryDef对象的常用属性 1.MaxRecords属性 2.Name属性 3.RecordAffected属性 4.SQL属性 5.Type属性 6.Updatable属性

  34. 9.8.3 QueryDef对象的常用方法 1.OpenRecordset方法 该方法执行查询并产生一个记录集 2.Execute方法 该方法用来运行SQL查询,有一个可选的参数,该方法使用的场合不多,此书不再介绍。

  35. 9.8.4 QueryDefs对象的常用属性和方法 该方法的使用格式如下: OQueryDefs.Delete QueryDefname 【例9-13】设计一个显示表的查询名和删除查询的程序。程序的设计界面如图9-18所示。程序运行时把当前目录下的“教务管理”数据库中的所有查询名显示在列表框List1中,在Text1文本框中显示查询的数量。在列表框中选中一个查询后,单击“删除”按钮将删除对应的查询。 题意分析:为在运行时在列表框中显示数据库中的所有查询名,可通过一个For Each…In循环,把数据库的QueryDefs集合中的每个QueryDef对象的Name属性添加到列表框中,为显示QueryDefs中查询的数量,可使用QueryDefs的Count属性,为删除查询,可使用QueryDefs的Delete方法。

  36. 9.9 Relation对象 9.9.1 Relation对象的常用属性1.Attributes属性 2.Table属性 3.ForeignTable属性 4.Name属性 9.9.2 Relation对象的常用方法 Relation对象有一个方法CreateField,该方法用来创建建立关系的字段。创建的字段名的名称必须是主表中的建立关系的字段名称,并且建立的字段应添加到Relation对象的Fields集合中。

  37. 9.9.3 Relation对象的建立方法 建立一个关系一般需经过以下几骤: (1)打开数据库; (2)调用数据库对象CreateRelation方法创建一个关系(主表中的相关字段必须建立了唯一索引); (3)调用关系变量的CreateField方法创建一个关系字段; (4)把创建的关系字段添加到关系的集合变量Fields中; (5)设置关系字段对象的ForeignName属性为从表的相应字段; (6)把建立的关系添加到数据库的关系集合中。

  38. 【例9-14】为教务管理数据库的“课程”表和“必修课成绩”建立关系,关联的字段为“课号”,关系的类型为“级联更新”,已知“课程”表的内容如图9-20所示,“必修课成绩”表的内容如图9-21所示,且“课程”表已按照“课号”进行了索引(无重复)。 题意分析:“课程”表应为主表,“必修课成绩”表应为从表,关系字段为“课号”。

  39. 9.10 RecordSet对象 9.10.1 RecordSet对象的概念和类型 RecordSet对象是一批记录的集合,在结构上是由一系列的记录和字段组成。RecordSet对象中的记录可以直接从数据库的表中取得,也可以通过查询返回。 根据对记录的存取和控制方式,RecordSet对象可以分成五种基本类型,分别是表型、动态集类型、快照型、仅向前型和动态类型。

  40. 9.10.2 RecordSet对象的创建 使用Database对象创建记录集的格式如下: Set recordset=database.OpenRecordset(source, type,options,Lockedits) 使用TableDef对象创建记录集的格式如下: Set recordset=TableDef.OpenRecordset(type, options,Lockedits) 使用QueryDef对象创建记录集的格式如下: Set recordset=QueryDef.OpenRecordset(type, options,Lockedits)

  41. 【例9-15】编写一个程序,把“教务管理”数据库中的“学生”表中的所有学生的姓名显示在窗口中的List1列表框中,把“课程”表中的所有课程名显示在List2列表框中。已知“教务管理”数据库已经在当前目录下,要求使用Recordset对象来实现。程序的设计界面如图9-23所示。 题意分析:为使在程序一开始运行时就在列表框中显示要求的内容,可在窗体的Load事件中进行编程。显示某表中的内容,可把该表以记录集的形式打开。为把记录集中的某一字段内容列出来,可通过一个循环,在循环中引用该字段的Value属性就得到当前记录的值,然后通过调用MoveNext方法把记录指针移到下一条记录,循环的结束条件应该是记录指针移到记录集的末尾。

  42. 9.10.3 RecordSet对象的常用属性 1.Bookmark属性 2.Bookmarkable属性 3.LastModified属性 4.DateCreated属性 5.LastUpdated属性 6.Filter属性 7.Sort属性 8.Name属性 9.AbsolutePosition属性 10.PercentPosition属性 11.Restartable属性 12.Transactions属性 13.Type属性 14.Updatable属性

  43. 9.10.4 RecordSet对象的常用方法 1.CancelUpdate方法 该方法的使用格式如下: Recordset.cancelUpdate 2.Clone方法 该方法的使用格式如下:Set desRecordset= resRecordset.Clone (LockType) 3.GetRows方法 4.Requery方法 该方法的使用格式如下: Recordset.requery

  44. 9.11 DAO事务处理 9.11.1 事务的概念与VB中的事务处理方法1.事务的概念 所谓事务,是指捆绑在一起的一组操作,在应用程序中,一个事务作为一个整体进行执行,被看作是一个任务单元。 2.事务处理方法 (1)BeginTrans方法 该方法的格式如下: Workspace.BeginTrans (2)CommitTrans方法该方法的格式如下: Workspace.CommitTrans (3)Rollback方法 该方法的格式如下: Workspace.Rollback

More Related