VisualBasic中的数据库编程.ppt

上传人:小飞机 文档编号:6523017 上传时间:2023-11-08 格式:PPT 页数:132 大小:1.53MB
返回 下载 相关 举报
VisualBasic中的数据库编程.ppt_第1页
第1页 / 共132页
VisualBasic中的数据库编程.ppt_第2页
第2页 / 共132页
VisualBasic中的数据库编程.ppt_第3页
第3页 / 共132页
VisualBasic中的数据库编程.ppt_第4页
第4页 / 共132页
VisualBasic中的数据库编程.ppt_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《VisualBasic中的数据库编程.ppt》由会员分享,可在线阅读,更多相关《VisualBasic中的数据库编程.ppt(132页珍藏版)》请在三一办公上搜索。

1、10.1 数据库的概念10.2 关系数据库操作语言SQL简介10.3 Visual Basic 中的数据库操作,第10章 Visual Basic 中的数据库编程,一个数据库系统由数据库和数据库管理系统(DBMS,Data Base Management System)组成。数据库存储数据,是一个静态的存储结构。数据库中的数据是存放在外存储器中的永久性数据,使用时必须把它调入内存。数据库管理系统是一个专门的管理软件,负责数据的检索、增加。、删除与修改,维护数据的一致性与完整性,提供正确使用的各种机制。应用程序不能直接使用数据库中的数据,只能提出访问数据的请求,由DBMS完成对数据的操作。,10

2、.1 数据库的概念,关系数据库的逻辑结构,关系数据库是二维表的集合。这些二维表是有应用语义的。表中的每行是描述事物状态的一组数据,每列描述事物的某个特征。下列是几个重要的术语。元组:表中的一行,应用上常称为记录。属性:表中的一列,应用上常称为字段。候选码:能够惟一地标识表中一个记录的最小的字段集合。主码(主键,主关键字):被指定用作记录标识的候选码。从上述定义可见,候选码可有多个,主码则只有一个。,例 10_1 某数据库中包含三个表,教师表(教师号,教师名,系,教研组);,例 10_1 某数据库中包含三个表,教师表(教师号,教师名,系,教研组);课程表(课程号,课程名,学时,学分,层次);,例

3、 10_1 某数据库中包含三个表,教师表(教师号,教师名,系,教研组);课程表(课程号,课程名,学时,学分,层次);排课表(班级号,课程号,教师号,上课时间,课室号)。,例 10_1 某数据库中包含三个表,教师表(教师号,教师名,系,教研组);课程表(课程号,课程名,学时,学分,层次);排课表(班级号,课程号,教师号,上课时间,课室号)。括号内是每个表的字段名。在教师表中,根据“教师号”可以惟一决定一个记录。因此,“教师号”可以作为教师表的候选码。如果无一教师同姓同名,则“教师号”也可作为候选码。可以任选其中之一作为主码。课程表中只有“课程号”可以作为候选码,因此它就是主码。排课表中只有同时给

4、定“班级号”和“课程号”才能惟一决定一个记录,所以它的主码是字段集合(班级号,课程号)。,排课表中的字段名“课程号”与课程表的主码“课程号”语义相同且取值范围也相同,称为课程表的外码。排课表可以通过它与课程表中的“课程号”联系。字段名“教师号”与教师的主码“教师号”语义相同且取值范围也相同,是教师表的外码。排课表可以通过它与教师表中的“教师号”联系,即排课表除主码外有两个外码。,SQL Structured Query Language(结构化查询语言)是最重要的关系数据库操作语言。SQL语言不是一个完整的程序设计语言。它没有用于控制程序分支的GOTO语句,也没有用于控制循环的DO或For语句

5、。它主要包括创建、更新和操作数据库中的数据的语句。SQL的语句 SQL中的数据操作,10.2 关系数据库操作语言SQL简介,SQL语句分两大类:DDL(数据定义语言)语句DDL语句用于创建和定义新的数据库表,字段和索引。DML(数据操作语言)语句DML语句用于检索,更新和插入数据。,10.2.1 SQL的语句,DDL语句用于创建和定义新的数据库表,字段和索引。有三类:CREAT(表定义),ALTER(表修改)和DROP(表删除)。CREATE 创建新表、字段、索引ALTER 在表中添加字段或改变字段定义DROP 删除数据库中的表或索引,DML语句用于检索,更新和插入数据。包括数据检索语句(SE

6、LECT语句)和数据更新语句(INSERT语句、UPDATE语句和DELETE语句)两大类。SELECT 检索满足条件的记录INSERT 插入新纪录UPDATE 更新指定的记录或字段DELETE 删除记录,1.数据检索语句SELECT功能:返回一张表。该表由满足检索条件的记录排列而成。格式:SELECT DISTINCT FROM,WHERE GROUP BY HAVING ORDER BY ASC/DESC,10.2.2 SQL中的数据操作,“SELECT”把所要选择查看的字段(即返回的表中所要包含的字段)的名字排列在关键字“SELECE”后面,各字段名之间用都逗号“,”分隔。其中:DIST

7、INCT 表示删掉查询结果中重复的行;FROM SELECT语句必须带的子句,指明要从哪个(些)表中选择所要查看的字段,表的名字排列在“FROM”后面,各表之间用逗号“,”分隔;,FROM 指定要从中检索的表WHERE 指定选择的标准GROUP BY 把所选择的记录分组HAVING 分组的提取条件ORDER BY 指定查询所得记录的排序方式,SQL子句,WHERE 选择的标准用跟在“WHERE”后面的表示;GROUP BY 该语句的是记录分组的根据,即把在该字段中有相同值的记录分在同一组;HAVING 该语句的是记录组提取的条件,即满足该条件的组才会最终出现在“返回表”中;ORDER BY 该

8、语句的是记录排序所用的“关键字”。ASC是升序,DESC是降序。,例 10_2 查看教师表中的全部数据.SELECT*FROM 教师在此,*代表全部字段的字段名。这是简化的写法,等价于:SELECT 教师号,教师名,系,教研组FROM 教师检索结果返回一张表。例 10_3 查看教师表中的全部教师的编号、姓名和所在系SELECT 教师号,教师名,系,FROM 教师例 10_4 在教师表中检索计算机系的教师SELECT*FROM 教师 WHERE 系=“计算机”,例 10_5 在课程表中查找学时数75大于,小于90的课程的课程名、学时数和学分数。SELECT 课程名,学时,学分 FROM 课程 W

9、HERE学时WHERE75 And 学时.,例 10_8 在课程表中使用”GROUP BY”,按课程名分组。SELECT 课程名,SUM(学时),SUM(学分)FROM 课程 GROUP BY课程名例 10_9 在课程表中使用”GROUP BY”按课程名分组后,使用HAVING提取同组课程学时之和70大于的行SELECT 课程名,SUM(学时),SUM(学分)FROM 课程 GROUP BY课程名HAVING SUM(学时)70,2.数据更新语句SQL的数据更新语句包括UPDATE语句,INSERT语句和DELETE语句三类。(1)UPDATE语句功能:对合乎条件的记录,改变其中一个或多个字段

10、(列)的值。格式:UPDATE 表名 SET=,=WHERE,例 10_10 把课程表中每门课程增加18学时,增加1个学分。UPDATE 课程SET学时学时+18,学分+1例 10_11 把0102号课程星期二3,4节的课改为星期一3,4节,地点不变。UPDATE 排课SET止课时间“周一34”WHERE 课程号“0102”And 上课时间“周二34”,(2)INSERT语句功能:添加新的记录到表中。格式:INSERT INTO(,)VALUES(,)(3)DELETE语句功能:删除表中记录。若无WHERE语句则删除表中全部数据,但表仍存在。格式:DELETE FROM WHERE,例 10_

11、12 在教师表中增加一个教师。INSERT INTO 教师(教师号,教师名,系,教研组)VALUES(“1031”,”余佩玉”,“电信工程”,“系统”)例 10_13 删除排课表中全部数据。DELETE FROM 排课例 10_14 从教师表中删除0873号教师的记录。DELETE FROM 教师 WHERE 教师号=“0873”,VB数据库应用程序包括三部分,用户界面、Jet引擎、数据库。,10.3 Visual Basic 中的数据库操作,用户界面,Jet引擎,数据库,VB提供的数据库引擎名叫“Jet”。它位于用户程序与数据库文件之间,功能是把用户程序访问数据库的请求变成对数据库的实际操作

12、,实现“透明”访问。只要是Jet支持的数据库,不管它是什么格式,在用户程序中都使用相同的数据访问对象和编程技术。此外,Jet包含一个“查询处理器”,接受、解释与执行SQL语句的请求。Jet还包含一个“结果处理器”,管理查询返回的结果。VB应用程序的用户界面的可视部分是窗体。通过窗体,用户可以查看和更新数据。驱动这些窗体的是应用程序的VB代码,包括用来请求数据库服务的“数据访问对象”的属性和方法。,数据库是包含数据库表的一个或多个文件,它包含数据但不对数据做任何操作。数据操作是数据库引擎的人任务。数据库应用程序的这三个部分可都放在一台计算机上,供单用户应用程序使用;也可放在不同的计算机上,通过网

13、络连接起来。,把数据存放在一台计算机上,而把应用程序存放在另外的计算机上的这种数据库应用程序有两种结构。一种叫“远程数据库”,另一种叫“客户机/服务器数据库”。在客户机/服务器数据库系统中,数据库引擎与数据库一同放在服务器上。数据库引擎可以同时为多台客户机服务。在远程数据库系统中,数据库引擎与用户应用程序放在同一台计算机上,数据库单独放在远程计算机上。,用户界面,数据库引擎,数据库,客户机/服务器,服务器,客户机,服务器,客户机,用户界面,数据库引擎,数据库,远程,在VB中不能直接对数据库内的表进行访问。VB通过“记录集”(Record set)对象访问数据库。记录集由一个或几个表中的数据构成

14、,也是由行和列组成的一张表。在VB中的记录集有表、动态集和快照三种类型。,1.表(Table)类型表类型的记录集当中的数据只能来源于实际数据库中的一个表,不能是多个表中数据的联合。VB中的各种数据库操作对表类型的记录集都适用。2.动态集(DynaSet)类型动态集类型的记录集当中的数据是对一个或几个表中的记录的引用。动态集和产生动态集的基本表可以互相更新。在打开动态集时,如果其他用户修改了基本表,动态集将反映这种修改。,3.快照(SnapShot)类型快照类型的记录集是静态的数据(只读)。它反映产生快照的一瞬间数据库的状态。因此,只适合于浏览。快照类型有一个变形类型,被称为“仅向前快照”或“向

15、前滚动快照”。仅向前快照只允许在记录集内向前移动,而且在VB中的仅向前快照类型的记录集是不可更新的。在VB中建立数据库有下列4种方法。(1)使用可视化数据管理器无需编程。(2)使用数据反访问对象通过编程。(3)通过 Microsoft Access 数据库管理系统。用Microsoft Access 创建的数据库与在VB中创建的库是一样的。(4)通过外部数据库应用程序。如 FoxPro,dBASE或ODBC客户机/服务器应用程序产品。VB可以访问这些外部数据库。,1.启动可视化数据管理器在VB的 设计 模式窗口中单击“外接程序”菜单中的“可视化数据管理器”命令即弹出可视化数据管理器窗口。,10

16、.3.1 可视化数据管理器,2.使用可视化数据管理器建立数据库使用可视化数据管理器建立数据库的过程大致分为三步。第一步,建立数据库结构;第二步,向数据库中添加表;第三步,向表中输入数据。,例 10_15 新建取名为“排课信息.mdb”的数据库并在其中建立名为“课程”的表。“课程”表的内容为表10-2所示。,第一步,建立数据库结构,单击此处,第一步,建立数据库结构,存储路径,第一步,建立数据库结构,数据库名,单击此处,第一步,建立数据库结构,数据库路径和名字,下面开始在数据库中建立表。,第二步,向数据库中添加表,右击可弹出菜单,单击这里,第二步,向数据库中添加表,单击这里,第二步,向数据库中添加

17、表,Text类型需设长度,第二步,向数据库中添加表,添加索引,第二步,向数据库中添加表,单击这里则可生成表,第三步,向表中输入数据,第三步,向表中输入数据,第三步,向表中输入数据,第三步,向表中输入数据,基本概念DAO 是 Microsoft Jet 数据库引擎的面向对象的编程接口,由一系列数据访问对象以分层形式组织而成。分层结构的顶部是 Microsoft Jet 数据库引擎本身DBEngine 对象,它是惟一不被其他对象包含的数据访问对象。它拥有一个Workspaces(工作区集合)对像,该集合包含一个或多个Workspace(工作区)对象。每个Workspace对象拥有一个DataBas

18、es(数据库集合)对象,该集合包含一个或多个DataBase(数据库)对象。每个DataBase对象拥有一个TableDefs(表集合)对象,该集合包含一个或多个TableDef(表)对象。如此等等.,10.3.2 DAO数据访问对象,DAO 分层结构图中的元素实际上是类而不是对象。它们只描述对象的“类型”。例如语句:Dim db As DataBase所表示的意思是:db 是一个变量,代表一个 DataBase(数据库)类型的对象。语句:Dim rs As RecordSet所表示的意思是:rs 是一个变量,代表一个RecordSet(记录集)类型的对象。,在这个分层结构的模型中,集合的成员

19、可用于基于0的索引来访问。例如在名叫 db 的 DataBase 中的第一个 TableDef,可以用 db.TableDefs(0)来表示,第二个用 db.TableDefs(1)来表示,等等。分层结构中的对象通过它们的完整路径来标识。在路径中使用点“.”定位符。例如:DBEnging.Workspaces(0).DataBases(0).TableDefs(0).Fields(“课程号”)表示一个名叫“课程号”的字段。该字段在TableDefs集合的第一个TableDef中,TableDefs集合在DataBases集合的第一个DataBase中,DataBases集合在Workspace

20、s集合的第一个Workspace中,而Workspaces集合则在DBEnging中。,使用 DAO 数据访问对象编程包括两个内容:一是创建对象变量;二是通过设置其属性和调用其方法来操作它们,实现对数据库本身的访问。,(1)DBEngine 对象DBEngine对象位于 DAO 顶层,容纳并控制其他 DAO 对象的行为。它不属于任何对象集合,不能在程序中创建它的实例。,(2)Workspace 对象和 Workspaces 集合Workspace 对象不是一个永久性的对象。它是DBEngine 对象的一个“会话”(session)。它从用户注册开始完成一系列操作和事务处理,描述 Microso

21、ft Jet 数据库引擎所进行的一系列工作。在用户注销或管理员强制终止时结束。Workspaces 集合包含当前 DBEngine 对象中所有活动的 Workspace 对象。第一次引用 Workspace 对象时,DBEngine 自动创建默认工作区 Workspaces(0)。,Workspace 对象的属性和方法摘要,Name 属性 Workspace 对象的名字Type 属性 Workspace 对象的类型,共有两种:通过 DAO 直接访问 ODBC 数据源时,使用 ODBCDirect Workspace;访问 Microsoft Jet 数据库时使用 Microsoft Jet W

22、orkspace,OpenDataBase 方法 打开 Microsoft Jet 3.51 支持的所有类型的数据库CreateDataBase 方法 在指定的 Microsoft Jet 工作区创建一个新的数据库,以*.mdb 文件的形式存放在磁盘上,并返回一个打开的 DataBase 对象,Workspace 对象的方法摘要,OpenDataBase 方法功能:在一个 Workspace 对象中打开指定的(物理)数据库,并且把该数据库的引用返回代表它的 DataBase 对象。格式:Set=.OpenDataBase(,),DataBase 一个对象变量,代表要打开的数据库Workspac

23、e 可选。是一个对象变量,代表一个存放的Workspace 对象,它是数据库所在的工作区。如 果不指定这个值,则使用默认 Workspacedbname 一个字符串,是已经存在的Microsoft Jet 数据库文件的名字或者是一个 ODBC 数据源的名字Options 可选。如果是 Microsoft Jet Workspace,则 True 表示以“独占”方式打开数据库,False 表示以“共享”方式打开Read-Only 可选,是一个布尔变量。True 表示只读,False 表示可读/写Connect 可选,是一个字符串变量,指明包括口令在内的各种连接信息,CreateDataBase

24、方法格式:Set=.CreateDataBase(,),DataBase 一个对象变量,代表要创建的数据库对象Workspace 一个对象变量,代表一个存在的工作区对象,所要创建的数据库对象就将被包含在这个工作区。如果默认这个部分,则自动使用默认工作区Name 1 至 255 个字符的字符串,是数据库文件的名字。可以使用完全的路径和文件名。默认的类型是.mdbLocale 一个字符串表达式,指定排序方式。此域不能缺(但可以使用默认值),否则出错。如果要为新数据库建立一个“口令”,可在“口令”前加上字符串“;pwd=”连接到 locale 字符串的后面。例如,locale参数使用默认值,口令用“

25、little-cat”则应在此位置填写“;pwd=“little-cat”Options 常数的组合,指定诸如版本号等信息。若不指定则使用 version 3.0 文件格式,(3)DataBase 对象和 DataBases 集合DataBase 对象映射的是打开的数据库。建立数据库映射,必须结合 Set 语句和 Workspace 对象的 OpenDataBase 或 CreateDataBase 方法,将一个 DataBase 型的对象变量指定为对数据库的引用,然后通过该变量的属性和方法来操作数据库。DataBases 集合是当前打开的数据库的集合。当一个 DataBase 对象在某个 W

26、orkspace 对象中被打开时或创建时,将自动添加到 DataBases 集合中;当用 Close 方法关闭 DataBase 对象时,将自动从DataBases 集合中删除。,DataBase 对象的属性,Name 属性 DataBase 对象的名字Connect 属性 连接 ODBC 数据源时的连接字符串Updatable 属性 其值为 True 则数据库可以更新,值为 False 则不能更新,DataBase 对象的方法摘要CreateTableDef 方法 在当前数据库中创建一个永久性的表对象CrdatQueryDef 方法 在当前数据库中创建一个永久性的查询对象OpenRecord

27、Set 方法 创建一个新的 RecordSet 对象并且把它加到 RecordSets 集合中Refresh 方法 当物理数据库刷新号,刷新数据库对象以反映物理数据库的最新数据Close 方法 关闭当前数据库。关闭数据库前必须关闭所有打开的记录集对象,CreateTableDef 方法功能:创建一个新的 TableDef 对象(仅适用于 Microsoft Jet Workspaces)。格式:Set=.CreateTableDef(,),CreateTableDef参数说明:TableDef 对象变量,代表所要创建的表DataBase 对象变量,代表要在其中创建表对象的数据库Name 可选。

28、可变类型(字符串子类),新表对象的名字attributes 可选。常数或常数组合,表征新表的属性Source 可选。可变类型(字符串子类),保存着一个外部数据库中的表的名字,该表时原始数据所在之处Connect 可选。可变类型(字符串子类),说明一个打开的数据库的数据源,OpenRecordSet 方法功能:创建一个新的 RecordSet 对象并且把它加到 RecordSets 集合中。格式1:(Connection 和 DataBase 对象使用)Set=.OpenRecordSet(,)格式2:(QueryDef,RecordSet 和 TableDef 对象使用)Set=.OpenRe

29、cordSet(,),OpenRecordSet参数说明:recordSet 对象变量,代表要打开的 RecordSet 对象object 一个存在的对象变量。就是要从它那里打开一个RecordSet 对象Source 一个字符串,指出型 RecordSet 的记录源。该源可以时表名、查询名或者时返回一组记录的 SQL 语句Type 可选。一个常数,指出要打开的 RecordSet 的类型Options 可选。若干常数的组合,指出新 RecordSet 的特征(操作权限等)lockedits 可选。一个指示 RecordSet 的读写权限的常数,“Type”的值及其意义:dbOpenTable

30、 打开表类型的记录集对象dbOpenDynaset 打开动态集类型的记录集对象dbOpenSnapshot 打开快照类型的记录集对象dbOpenForwardOnly 打开向前滚动快照类型的记录集对象注意:如果不指定”Type”参数的值,则在 Microsoft Jet 工作区打开 RecordSet 对象时,OpenRecordSet 方法将打开一个表类型的记录集。如果指定一个查询,OpenRecordSet 方法将打开一个动态类型的记录集。,(4)TableDef 对象和 TableDefs 集合TableDef 对象映射物理数据库中的表,也用来映射 Microsoft Jet 数据库的链

31、接表。前者时数据库中的永久性的表,链接表是指链接到 Microsoft Jet 数据库中的其他数据库的表。链接表的数据存储在外部数据库中。TableDefs 集合是数据库中所有表的集合。,TableDef 对象的属性Name 属性 TableDef 对象的名字,可不同于库中的表名ValidationRule 属性 有效性规则,约束用户输入到表中 数据的范围,维护表的完整性DateCreated 属性 创建表的日期和时间(只读)Updatable 属性 值为 True 时则表中数据可以更新,值为 False 则不能更新RecordCount 属性 对于库表,返回表中记录总数 对于链接表,则总是返

32、回-1,TableDef 对象的方法摘要CreateIndex 方法 为 TableDef 对象创建一个索引CreateField 方法 为 TableDef对象创建一个字段OpenRecordSet 方法 创建一个记录对象,CreateField 方法功能:创建一个新的 Field 对象(仅适用于 Microsoft Jet Workspaces)。格式:Set=.CreateField(,),CreateField 参数说明:Field 对象变量,代表要创建的 Field 对象object 对象变量,代表 Index,Relation 或 TableDef 对象。此方法正是要为它们创建新的

33、 Field 对象Name 可选。可变类型(字符串子类),新的 Field 对象的名字Type 可选,是一个表征新的 Field 对象的数据库类型的常数size 可选。一个可变类型(整型子类)。当 Field 对象的数据类型是 Text 时,表示此字段可以存储的最大字节数,(5)RecordSet 对象和 RecordSets 集合使用 RecordSet 对象可在记录一级上对数据库进行操作。程序运行时,可以用 OpenRecordSet 或 CreateRecordSet 方法创建 RecordSet 对象,然后通过该对象操作磁盘上的物理数据库。,RecordSet 对象的属性Absolut

34、ePosition 属性 设置或读取当前记录在记录集中的位置。第一条记录的位置是 0,最后一条记录的 位置是 RecordCount 1EOF 属性 当记录指针向后移动越过最后记录时,值为 TrueIndex 属性 设定或返回表类型的记录集的当前索引的名字。该索引必须是存在的Name 属性 RecordSet 对象的名字,Field(I).Value 属性 当前记录第 I 号记录的值Sort 属性 指定记录集记录的排序准则RecordCount 属性 记录集当中记录的总数BOF 属性 当记录指针向前移动越过首记录时,值为 TrueNoMatch 属性 当用 Seek 或 Find 方法查找时,

35、如果没有满足条件的记录,则 NoMatch 属性值为 TrueValidationRule 属性 有效性规则。用来约束用户输入数据的范围,RecordSet 对象的方法Close 方法 关闭记录集Edit 方法 将记录集设定为编辑状态。通常与 UPDATE 方法联用,即编辑完成后用 UPDATE 方法 实际写入物理数据库中AddNew 方法 向记录集添加一条空记录,且将指针移 到该记录DELETE 方法 删除当前记录。记录指针仍停留在已被 删除的记录处,Move 方法 将记录指针移到指定位置MoveFirst 方法 将记录指针移到第一条记录,使之成 为当前记录MoveNext 方法 将记录指针

36、移到下一条记录,使之成 为当前记录MovePrevious 方法 将记录指针移到前一条记录,使 之成为当前记录MoveLast 方法 将记录指针移到后一条记录,使之成 为当前记录,Seek 方法 将记录指针移到满足条件的第一条记录FindFirst 方法 查找满足条件的第一条记录FindNext 方法 查找满足条件的下一条记录FindPrevious 方法 查找满足条件的上一条记录FindLast 方法 查找满足条件的最后一条记录,AddNew 方法功能:在一个可以更新的记录集对象中创建一个新记录格式:.AddNew其中,RecordSet 是对象变量,代表要在其中增加新记录的哪个记录集对象,

37、RecordSet 要移动其中记录指针的那一个记录集,DELETE 方法功能:在一个可以更新的记录集对象中删除当前记录格式:.DELETE其中,RecordSet 是对象变量,代表打算删除其中记录的哪个记录集对象,Move 方法格式:.Move,rows 一个有符合的长整型数。正数指定向前(向文件尾)移动的行数;负数指定向后(向文件头)移动的行数startbookmark 可选。可变类型(字符串子类)的值,表 示一个书签。如果指定,则移动相对于书签,否则相对于当前记录,MoveFirst,MoveLast,MoveNext,MovePrevious 方法格式:.MoveFirst|MoveLa

38、st|MoveNext|MovePrevious,Seek 方法功能:在一个带有索引的,表类型的记录集当中寻找一个合乎条件的记录,使它成为当前记录。格式:.Seek,RecordSet 对象变量,代表一个目前存在的表类型的记录集对象,它所定义的索引必须与记录集对象的“Index”属性相符comparison 一个字符串表达式,其值为:=或 key1,key2 113 个值,对应于记录集对象的当前索引中的各个域,FindFirst,FindLast,FindNext,FindPrevious 方法功能:在一个动态类型或快照类型的记录集对象中寻找满足条件的第一(最后、下一、前一、)条记录,使该记录

39、成为当前记录(仅适用于 Microsoft Jet 工作区)格式:.FindFirst|FindLast|FindNext|FindPrevious,RecordSet 对象变量,代表一个现存的动态类型或快照类型的记录集对象criteria 用来查找记录的一个字符串。类似 SQL 语句的 WHERE 子句但没有“WHERE”,注意:关于各种数据访问对象及其属性方法的详尽说明,请查阅“对象浏览器”。查找记录操作步骤:在 VB 集成开发环境的“设计模式”窗口,单击试图菜单中的“对象浏览器”,打开“对象浏览器”对话框用在其中的下拉式组合框里输入需要查阅的对象(或属性或方法或事件)的名字(本例中的 A

40、ddNew 方法)单击组合框右边的“搜索”按钮在“搜索结果”列表框中选择所要的项在“Recordset 的成员”列表框中选择所要的项单击“帮助”按钮(即对象浏览器窗口右上角的?号),弹出所查项目的详细说明,2.用 DAO 数据访问对象编程,使用数据访问对象编程包括两部分:一是创建对象变量;二是通过设置对象的属性,调用对象的方法来操作它们,要在VB程序中使用 DAO 数据访问对象,必须在工程中引用 DAO 的数据库引擎库。引用的步骤是:单击“工程”菜单中的“引用”命令,打开“引用”对话框在“可用的引用”列表框中选择“Microsoft DAO 3.51 Object Library”,Here,

41、例10_16 对数据库文件“排课信息.mdb”中的“课程”表进行操作,功能包括记录的浏览、添加、查找合乎条件的记录并且删除。,第一步:新建一工程,按上页的方法引用Microsoft DAO 3.51 Object Library。,第二步:界面设计:本例由一个窗体、5个标签、5个文本框和6个命令按钮组成。,Command1-Command4,Command5,第三步:代码,Dim db As Database,rs As RecordsetPrivate Sub Form_Load()Set db=OpenDatabase(App.Path&排课信息.mdb)Set rs=db.OpenRec

42、ordset(课程,dbOpenTable)rs.Index=课程索引 Call recshowEnd Sub,Private Sub recshow()On Error GoTo err Text1.Text=rs.Fields(课程号)Text2.Text=rs.Fields(课程名)Text3.Text=rs.Fields(学时)Text4.Text=rs.Fields(学分)Text5.Text=rs.Fields(层次)Exit Suberr:MsgBox Error!End Sub,Private Sub Command1_Click()rs.MoveFirst Call recs

43、howEnd SubPrivate Sub Command2_Click()rs.MoveNext Call recshowEnd SubPrivate Sub Command3_Click()rs.MovePrevious Call recshowEnd SubPrivate Sub Command4_Click()rs.MoveLast Call recshowEnd Sub,Private Sub Command5_Click()rs.AddNew rs.Fields(课程号)=InputBox(请输入课程号,添加记录)rs.Fields(课程名)=InputBox(请输入课程名,添加记

44、录)rs.Fields(学时)=InputBox(请输入学时数,添加记录)rs.Fields(学分)=InputBox(请输入学分数,添加记录)rs.Fields(层次)=InputBox(请输入层次级别,添加记录)rs.Update rs.MoveLast Call recshowEnd Sub,Private Sub Command6_Click()Dim str1 As String str1=InputBox(请输入要删除的课程号,删除对话框架)rs.Seek=,str1 rs.Delete Call Command2_Click Call recshowEnd Sub,3.使用 Da

45、ta 控件建立应用程序,VB集成开发环境“工具箱”中的 Data 控件提供 DAO 数据访问对象的部分功能。只要在“设计模式”下,设定它的四个属性(Connect,DataBaseNam,RecordSource,EOFAction),无需编程就可实现在一个表中前后移动记录指针,添加空记录。“Data”控件本身不能显示数据,需要使用它的“依附”控件来显示数据。“工具箱”中常用的依附控件主要有文本框(TextBox),标签(Label),复选框(CheckBox)与 OLE 控件等。在依附控件中只要设置两个属性(DataSource 和 DataField),所有这些属性都可以在属性窗口中对应项

46、的下拉列表中选择。,Data 控件的四个属性的简要说明:,Connect 返回或设置控件所绑定的数据源的类型。可以是 Access,dBASE 的多个版本DataBaseNam 返回或设置 Data 控件所绑定的数据源(磁盘上的数据库文件)的名称及位置。对于多表结构的数据库文件(如 Access),在此使用库文件名;对于单表结构的数据库文件(如 Dbase),则使用库文件所在的文件夹的名字RecordSource 返回或设置 Data 控件的数据源中一个表的名称,EOFAction 返回或设置一个值,指示在 EOF 属性为True 时 Data 控件进行什么操作0(默认值)保持最后一个记录为当

47、前记录1 保持 EOF 属性为 True,即记录指针保持在“越位”的位置2 自动添加一个空白记录,“依附控件”的两个属性的简要说明:DataSource 控件所依附的 Data 控件的名字DataField Data 控件所绑定的表中的一个字段的名字使用 Data 控件建立应用程序,就是适当地设定 Data 控件和依附控件的属性,使 Data 控件绑定数据库的一个表,成为这个数据源(表)的代理,向“依附控件”供应数据。“依附控件”绑定表中的一个字段,显示表的“当前记录”里该字段的内容。,例 10_17对数据库文件“排课信息.mdb”中的“课程”表进行操作。功能包括记录的移动,修改与添加新记录。

48、,本例无需编写代码。人机界面由一个窗体,一个Data控件,五个标签和五个文本框组成。各控件属性值请见课本389页。,4.“Data控件”与 DAO 数据访问对象的关系,把例 10_16 程序中的代码与例 10_17 中“Data 控件”的属性设置做一对比,不难发现,“Data 控件”的作用就是代替了例 10_16 程序中开头的一行的两个对象变量的定义语句,还代替了 Form_Load()过程中头两个使用 Open 方法的语句。在例 10_16 中使用 DAO 数据访问对象编程前,必须通过“工程”菜单引用 DAO 的数据库引擎库“Microsoft DAO 3.51 Object Library

49、”就被自动加入工程中。因此,“Data 控件”与 DAO 数据访问对象并不互相排斥,可以在同一个工程中按需要同时使用它们。,Microsoft公司制定了一个称为OLEDB的数据技术标准,目的是使用各种不同的编程语言,以统一的方式访问存储在不同信息源中的数据。这些信息源范围广泛,从简单的文本文件到复杂的异种数据库。Microsoft公司用一组组件对象模型(COM,Component Object Model)接口实现这个任务。这一组接口是系统级的编程接口,功能齐备,但使用手续复杂。Microsoft公司在OLEDB之上建立一套基于对象的应用级编程接口,是连接应用程序和OLEDB的桥梁,这就是AD

50、O(Active X Data Objects)。,10.3.3 ADO数据访问对象,基本概念Microsoft OLE DB 可以访问的数据种类很多,甚至不一定是传统意义的数据库。OLEDB模型中有一个重要的逻辑部件叫“提供者”,OLEDB为它所支持的每种数据源准备了一个“提供者”。ADO通过这些“提供者”以统一方式,访问存储在不同信息源中的数据。,Connection(连接),Command(命令)和RecordSet(记录集)是顶层对象,可以各自独立地创建或删除。Parameter(参数)对象可以独立创建,但作用前必须与Command对象联系起来。Field(字段),Error(错误),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号