第15章Visual Basic与数据库技术

上传人:feng****heng 文档编号:170561473 上传时间:2022-11-21 格式:DOCX 页数:70 大小:1.04MB
收藏 版权申诉 举报 下载
第15章Visual Basic与数据库技术_第1页
第1页 / 共70页
第15章Visual Basic与数据库技术_第2页
第2页 / 共70页
第15章Visual Basic与数据库技术_第3页
第3页 / 共70页
资源描述:

《第15章Visual Basic与数据库技术》由会员分享,可在线阅读,更多相关《第15章Visual Basic与数据库技术(70页珍藏版)》请在装配图网上搜索。

1、第 15 章 Visual Basic 与数据库技术 本章要求1. 掌握数据库及数据库管理系统的概念2. 掌握关系型数据库模型的关系(表), 记录、字段、关键字、索引概念等。3. 学会使用可视化数据管理器建立的数据 库是Access数据库(类型名为.mdb )4. 了解数据库控件的常用属性及与相关 控件的绑定5. 了解结构化查询语言 SQL 对数据库中的 数据进行操作本章重点:数据库的建立与使用本章难点:1、查询语言 SQL 对数据库中的数据进行操 作2、ADO 对象模型15.1 数据库的基本概念15.1.1 数据库的概念数据库是以一定方式组织、存储及处理 相互关联的数据的集合,它以一定的数据

2、结 构和一定的文件组织方式存储数据,并允许用户访问。这种集合具备下述特点: 最少冗余;例如:一个表:记录编号,姓名 等基本信息。而另外一个表记录编号外还有 姓名等信息,这时候姓名的信息就是冗余 的。因为在第一个表可以查到。 数据资源共享; 数据独立性,即数据独立于使用它的应用程 序; 由统一的软件系统管理和控制数据的增加 删除、修改和检索。 数据库发展的三个阶段人工管理阶段;文件管理阶段 数据库管理阶段 数据库分类数据库中数据的组织形式有多种,按数据库使用的数据结构模型划分,到目前为止,数据库可分为: 层次数据库:采用层次模型; 网状数据库:采用网状模型; 关系数据库:采用关系模型; 面向对象

3、数据库:采用面向对象模型。根据数据模型,即实现数据结构化所采用的 联系方式,数据库可以分为层次数据库、网状数据库和关系数据库1512 关系数据库的基本术语1 关系(表) 在关系数据库中,数据以关系的形式出现, 可以把关系理解成一张二维表(Table)。2记录(行) 每张二维表均由若干行和列构成,其中每一 行称为一条记录(Record),3字段(列)二维表中的每一列称为一个字段(Field), 每一列均有一个名字,称为字段名,各字段 名互不相同。4主键关系数据库中的某个字段或某些字段的组合定义为主键(Primary Key)。每条记录的 主键值都是唯一的,这就保证了可以通过主 键唯一标识一条记录

4、。5索引_rJ_rJ为了提高数据库的访问效率,表中的记 录应该按照一定顺序排列,通常建立一个较 小的表索引表,该表中只含有索引字段 和记录号。通过索引表可以快速确定要访问 记录的位置。1513 数据库访问技术1数据库引擎就是操作数据库的一段程序 或程序段。是一组动态链接库,它是数据库 应用程序与数据库存储之间的一种接口。 比如:在 VB 中,用 microsoft jet 数据库 引擎和数据访问对象 DAO(data access object)可以创建功能强大的客户/服务器 应用程序。VB提供的数据库引擎叫Jet,有两种与Jet 数据库引擎接口的方法:Data控件和数据访 问对象。ODBC(

5、Open database connectivity,开放 式数据库连接性)数据库,凡是遵循 ODBC标准的客户/服务器数据库。如:Microsoft SQL Server、Oracle 。 一般来说,如果要 开发个人的小型数据库系统,用 Access 数 据库比较合适,要开发大、中型的数据库系 统用 ODBC 数据库更为适宜。而 dBase 和 FoxPro 数据库由于已经过时,除非特别的情 况,否则不要使用。在我们的例子中,当然 选用 Access 数据库了。建立 Access 数据库 有两种方法:一是在 Microsoft Access 中 建立数据库(可视化数据管理器);一是使 用数据

6、访问对象(DAO)。15.2 数据库管理器 1521 建立数据库VB 提供了两种方法建立数据库,分别是:可视化数据管理器数据访问对象(DAO)大型数据库(如 Oracle、Sybase 等)不能 在 Visual Basic 6.0 中创建,要创建这些 类型的数据库,需要使用相应数据库管理系 统提供的工具来完成。 VB6.0 提供了创建Microsoft Access 数据库和其它一些数据库 的工具“可视化数据管理器”。在 Visual Basic 开发环境内单击“外 接程序”菜单中的“可视化数据管理器”选 项或在操作系统桌面上运行 Visual Basic 系统目录中的Visdata. ex

7、e,都可打开可视 化数据管理器。15.2. 2数据库管理器(Visdata)(1) 选择“可视化数据管理器”中“文件” 菜单中的“新建”菜单项用于创建数据库,若选择“打开数据库”则用于打开一个已经 建立好的数据库。(2) 选择 “Microsoft Access” 菜单项,单 击该菜单项下的“Version 7.0 MDB ”菜单 项,打开如下对话框:(3) 选择新建数据库要保存的目录后,在“文件名”文本框中输入数据库的名称 student,也就是数据库的文件名称。(4) 单击“确定”按钮关闭对话框,“可视化 数据管理器”开始在指定的目录下创建以指 定名称命名的 Microsoft Acces

8、s 数据库, 完成数据库创建工作,2. 向数据库中添加数据表 操作步骤为:1)在“数据库窗口”中右击鼠标,系统弹 出一快捷菜单,单击其中的“新建表”菜单 项,系统将打开“表结构”对话框 。2)在“表名称”文本框中键入表名,这里 键入名称 xjb。3)单击“添加字段”按钮,系统显示“添 加字段”对话框,在这个对话框中定义表的 字段。在“名称”文本框中输入字段名称, 这里输入第一个字段“学号”的名称“st_No”;单击“类型”下拉列表框,从中 选择字段类型“Integer ”;“大小”文本框 用于指定 Text 类型字段的宽度,该长度限 制了输入到这个字段的文本字符的最大长 度,选择 Text 之

9、外的数据类型时,不需要 指定宽度。单击“确定”按钮,这样我们就 定义了 xjb表的第一个字段。名称:顺席位置:关闭验证文本:厂目动壇加手駅r允许垂畏喫 厂磁要的3数据表中数据的编辑Q ?|J, L15.3 数据控件15.3.1添加Data控件数据控件(Data控件)是Visual Basic 中最常见的控件,在工具箱中有此控件,利 用它可以在应用程序中访问前面所创建的 数据库。数据控件不能显示数据,需要与数据 绑定控件配合使用。2数据控件常用属性1 Connect 属性 指定数据控件所要连接的 数据库类型Visual Basic 60 提供了 7 种可访问的数 据库类型Visual Basic

10、可识别的数据库有:1) MicrosoftAccess 的 MDB 文件(缺省值);2) Borland dBASE 、Microsoft Foxpro 的 DBF 文件;3) Borland Paradox 的 DB 文件4) Novell Btrieve 的 DDF 文件5) Microsoft Excel 的 XLS 文件;6) Lotus 的 WKS 文件;7) Open DataBase Connectivity(ODBC) 数 据库2. DatabaseName 属性DatabaseName 属性指定具体使用数据库的 名称,包括所有的路径名。 如果连接的是单表数据库,则 Datab

11、aseName 属性应设置为数据库文件所在的子目录名, 而具体文件名放在 RecordSource 属性中。 如果在“属性”窗口中单击DatabasName属 性右边的按钮,会出现一个公用对话框用于 选择相应的数据库。 例如,下面语句设置了可访问的数据库名 称:如果连接一个 Microsoft Access 的数据库 C: 职员档案.mdb,则 Datal. DatabaseName =” C: 职员档案.mdb”;如果连接一个 Foxpro数据库C: yang职员档案1. dbf, 因为 Foxpro 数据 库 只含有一 个 表, 则 Datal . DatabaseName =” C :y

12、ang”,RecordSource二职员档案 1. dbf”。 如果未写数据库文件的扩展名,则缺省情况 下为使用以.mdb为扩展名的数据库文件。3. RecordSource 属性RecordSource 属性确定具体可访问的数据, 这些数据构成记录集对象 Recordset。4. RecordsetType 属性RecordsetType 属性确定记录集类型。5. ReadOnly 属性在对 数 据 库 只 查看 不修 改时 , 通 常将 ReadOnly属性设置为True,而在运行时根 据一定的条件,响应一定的指令后,才将它 设置为 False。6)Exclusive 属性Exclusiv

13、e 属性值设置为 True 时,则在通过 关闭数据库撤消这个设置前,其他任何人不 能对数据库访问。这个属性的缺省值是 False。7)BOFAction、EOFAction 属性当 BOFAction 值为 0 ,控件重定位到第一个 记录;BOFAction值为1,移过记录集开始 位(上边),定位到一个无效记录,触发数 据控件对第一个记录的无效事件。当 EOFAction 值为 0,控件重定位到最后一 个记录;当EOFAction值为1,移过记录集 结束位,定位到一个无效记录,触发数据控 件对最后一个记录的无效事件; EOFAction 值为 2,向记录集加入新的空记录,可以对 新纪录进行编辑

14、,移动记录指针新纪录写入 数据库1533 数据控件的常用方法1 Refresh 方法 如果在设计状态没有为打开数据控件的有 关属性全部赋值,或当 RecordSource 在运 行时被改变后,必须使用激活数据控件的 Refresh 方法激活这些变化。2UpdateCountrols 方法 UpdateCountrols 方法可以将数据从数据库 中重新读到被数据控件绑定的控件内。使用 UpdateCountrols 方法终止用户对绑定内控 件的修改。3UpdateRecord 方法 当对绑定内的控件修改后,数据控件需要移 动记录集的指针才能保存修改,如果使用 UpdateRecord 方法可强制

15、数据控件将绑定 控件内的数据写入到数据库中而不再触发 Vaildate 事件。在代码中用该方法修改。 1534 数据控件的事件 1Reposition 事件Reposition 事件发生在一条记录成为当前 记录后。只要改变记录集的指针使其从一条指针移 到另一条记录。会产生 Reposition 事件, 可以在该事件过程中建立程序,可反映出记 录位置、记录总数等。2 Validate 事件 当要移动记录指针前,修改与删除记录前或 卸载含有数据控件的窗体时触发 Validate 事件。Validate事件检查被数据控绑定的控 件内的数据是否发生变化。它通过 save 参 数()True或False

16、)判断是否有数据发生 变化,Action参数判断哪一种操作触发了 Validate 事件。15. 4 RecordSet对象的属性和方法Recordset 对象代表一组与数据库相关的逻 辑记录集合。它所对应的数据来源可以是数 据表,也可以是和 SQL 语言中查询语句 (SELECT )有关的查询结果。Recordset 对象有三种类型:Table 类型:记录集为表集,可以显示、添 加、删除和修改,具有较好的更新性能。 Dynaset 类型:记录集为动态集,可以显示、 添加、删除和修改,并具有较大的操作灵活 性。Snapshot 类型:记录集为快照集,只能显示, 具有较好的显示速度。15.4.1

17、 记录集 Recordset 的属性Recordset 是一个数据结构,通常用来 表示从数据库中提取的一个记录集。在 VB 中只能通过 Recordset 对象对数据库进行 操作。(1) BOF和EOF属性用来测试记录指针是否已超出数据库的 首记录或尾记录。BOF属性用来测试记录指 针是否超出文件头;EOF属性用来测试记录 指针是否超出文件尾。假设需要读出数据库中的全部记录,可以使 用 Recordset 的 EOF 属性,程序如下:Do While Data1.Recordset.Eof=False 依次读出记录 记录指针下移一个Loop(2)AbsolutePosition 属性Absol

18、utePosition 属性用于反映记录 指针的当前位置。注意: AbsolutePosition 属性所反映出来的记录指针的当前位置值 比它的绝对位置的编号少 1,假设当前位置 1 号记录,由 AbsolutePosition 给出的值 则是 0。3) Bookmark 属性Bookmark 属性用于返回或设置当前记录指针的书签,其数据类型为String。在程序中可以用 Bookmark 属性对记录指针重新 定位。(4)RecordCount 属性RecordCount 属性用于测量数据库的总 记录数。在多用户情况下,由于 Recordset 对象的不断变化, RecordCount 测出的

19、数 据可能不准确。为了能得到准确的记录总 数,在测量记录总数时需要先将记录指针移 动到最后一个 记录,语句如下:Data1.Recordset.MoveLast 然后使用 RecordCount 属性,Data1.Recordset. RecordCount 这样就能准确地得到当前记录集的记录总 数了。(5)Nomatch 属性Nomatch 属性用于判断在使用 Find 方 法和 Seek 方法做查询操作时是否查询到符 合查询条件的记录,如果其返回值为 True 则表示没有符合条件的记录,反之则表示有 相应记录被找到 1542 RecordSet 对象的方法 对记录的操作能够通过 Recor

20、dset 对象的方 法实现。其常用方法有:1) AddNew 方法 加入一条新记录到记录集内存缓冲区。2) Edit 方法 允许对当前记录进行修改。3) Delete 方法 用于删除当前记录。4) Update 方法 把内存缓冲区的内容写进数据库文件,保存 对数据库所作的改动。5) Close 方法 关闭记录集和数据库。该方法也能用在数据 库对象上,将数据库关闭。6) Move 方法使用Move方法可代替对数据库控件对象的4 个箭头的操作遍历整个记录几种的记录。5 种 Move 方法是:(1) MoveFirst 方法移至第一条记录(2) MoveLast 方法移至最后一条记录(3) Move

21、Next 方法移至下一条记录(4) MovePrevious 方法移至上一条记录(5 )Moven方法向前或向后移动n条记录, n 为指定的数值7) Find 方法可在指定的 Dynaset 或 Snapshot 类型 的Recordset对象中査找与指定条件相符的 一个记录,并使之成为当前记录。4种Find 方法是:FindFirst或FindLast方法.找到满足 条件的第一个或最后一个记录。FindNext 或 FindPrevious 方法找到满 足条件的下一个或上一个记录。 4 种 Find 方法的语法格式相同: 数据集合.Find方法条件155 数据绑定控件 要使文本等控件与数据控

22、件捆绑在一起,成 为数据控件的绑定控件。并且能够受到数据 库约束,必须在运行时对这些控件的两个属 性进行设置:1) DataSource 属性DataSource 属性用来将一个有效的数据控 件与一个数据库连接。2) DataFleld 属性DataField 属性设置数据库有效的字段与绑 定控件建立联系。DataField 属性设置数据库有效的字段与绑 定控件建立联系。DataFleld 属性设置数据库有效的字段与绑 定控件建立联系。绑定控件、数据控件和数据库三者的关系例 15-1 学生信息管理系统Datal的三个属性:databasename(数据库 名,含盘符、路径)、recordsou

23、rce (数据 库表名)、 recordsettype(1-dynaset) Private Sub Command1_Click()If Command1.Caption = 添加 ThenCommand1.Caption = 确定 Command2.Caption = 取消 Data1.Recordset.AddNew Text1.SetFocusElseCommand1.Caption = 添加 Command2.Caption = 修改 Data1.Recordset.Update Data1.Recordset.MoveLast End IfEnd SubPrivate Sub Co

24、mmand2_Click()If Command2.Caption = 修改 ThenCommand1.Caption = 确定Command2.Caption = 取消ElseData1.Recordset.EditCommand1.Caption = 添加Command2.Caption = 修改End IfEnd SubPrivate Sub Command3_Click()Data1.Recordset.DeleteData1.Recordset.MoveNextIf Data1.Recordset.EOF = True ThenData1.Recordset.MoveLastEnd

25、IfEnd SubPrivate Sub Command4_Click()Dim msg As Stringmsg = InputBox(请输入要查询的学号:,提示信息)Data1.Recordset.FindFirst stuid= &If Data1.Recordset.NoMatch ThenMsgBox 没有符合条件的记录,vbOKOnly +vbInformation, 提示End IfEnd SubPrivate Sub Command5_Click()If Data1.Recordset.BOF = True ThenData1.Recordset.MoveFirstElseDa

26、ta1.Recordset.MovePreviousEnd IfEnd SubPrivate Sub Command6_Click()If Data1.Recordset.EOF = True ThenData1.Recordset.MoveLastElseData1.Recordset.MoveNextEnd IfEnd SubPrivate Sub Command7_Click()Unload MeEnd SubPrivate Sub Data1_Reposition() Data1.Caption = 当 前 记 录 号 是 : & Data1.Recordset.AbsolutePos

27、ition + 1 If Data1.Recordset.EOF ThenData1.Recordset.MoveFirst Command2.Enabled = FalseElseCommand2.Enabled = TrueEnd IfIf Data1.Recordset.EOF = True ThenData1.Recordset.MoveLastCommand6.Enabled = FalseElseCommand6.Enabled = TrueEnd IfEnd Sub15.6 SQL 语言SQL(结构化查询语言,Structure Query Language)是操作数据库的工业标

28、准语言, 许多数据库和软件系统都支持 SQL 或提供 SQL 语言接口。这一节将向用户介绍 SQL 的 常用语句。1SQL 命令SQL 的功能实际上包括查询、操作、定义和 控制四个方面。其中最常用的是查询功能, 其次为数据定义功能。SQL功能 数据查询 数据定义据控制SQL 基本命令动词命令动词SELECTCREAIE, DROPINSERT,UPDATE,DELETE grantREVOKESQL 语言的核心是查询语句,它的基本格式 为:SELECT 列名FROM =GROUP BY V列名 I HAVING 内部函 数表达式ORDER BY V列名 2 ASC 或 DESC 31SQL 在

29、 VB 中的应用1.使用SELECT语句查询无论是数据控件还是数据对象都可使用 SELECT 语句查询数据。例如:用 SQL 语句显示数据库 Bib I io. mdb 中出版日期为 1 996年全部记录。Data1 . RecordSource = SELECT * FROMTitles WHERE Year Published =1996 用Data1. Refresh方法激活这些变化。SELECT 语句可以看作记录集的定义语句,它 从一个或多个表中获取指定字段,生成一个 较小的记录集。下面通过一组对前面建立的 学生成绩数据库的查询操作来学习 SELECT 语句的基本用法。(1)选取表中部

30、分列。例如查询学生成绩 表中的英语和计算机成绩:SELECT 英语,计算机 FROM score(2)选取表中所有列。例如查询学生成绩 表中的所有信息:SELECT * FROM score(3)WHERE 子句。例如查询数学成绩不及格 的学生信息:SELECT * FROM score WHERE 数学60(4)复合条件。例如查询数学和英语成绩 均不及格的学生信息:SELECT * FROM score WHERE 数学60 AND 英 语60(5)ORDER BY 子句。例如查询学生成绩表 中的所有数学成绩及格的学生信息,并将查 询结果按数学成绩降序排列(ASC表示升序, DESC 表示降

31、序):SELECT * FROM score WHERE 数学=60 ORDERBY 数学 DESC( 6)统计信息。例如查询数学成绩不及格 的人数、数学平均分、最高分: SELECTCOUNT( *)AS 人数 FROM score WHERE 数学60SELECT AVG (数学)AS平均分,MAX (数学)AS 最高分 FROM score(7) GROUP BY 子句。例如查询男生与女生 的数学平均分:SELECT性别,AVG (数学)AS平均分FROM score GROUP BY 性别(8) HAVING 子句。例如查询数学成绩不及 格的人数大于 10 人的班级和相应人数: SEL

32、ECT 班级, COUNT( *) AS 人数 FROMscore WHERE 数 学 10(9) 多表查询。例如查询学生的学号、姓 名和籍贯(假设有一个 student 表,其中包 含了学生的学号、籍贯等信息): SELECTscore. 学号, score . 姓名, score 数学, student . 籍贯 FROM score, student WHERE score . 学号= student . 学号 如前所述,数据控件的 RecordSource 属性 除了可以设置成表名外,还可以设置为一条 SQL 语句,格式如下:数据控件名 . RecordSource=“SQL 语句”

33、例15-2用SQL改写上例中之查询功能代码。Private Sub data1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Data1.Caption = 当 前 记 录 号 是 : & Data1.Recordset.AbsolutePosition + 1 If Data1.Recordset.EOF Then Data1.Re

34、cordset.MoveFirst Command2.Enabled = FalseElseCommand2.Enabled = TrueEnd IfIf Data1.Recordset.EOF = True ThenData1.Recordset.MoveLastCommand6.Enabled = FalseElseCommand6.Enabled = TrueEnd IfEnd SubPrivate Sub Command1_Click()If Command1.Caption = 添加 ThenCommand1.Caption = 确定Command2.Caption = 取消Data

35、1.Recordset.AddNewText1.SetFocusElseCommand1.Caption = 添加Command2.Caption = 修改Data1.Recordset.UpdateData1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command2_Click()If Command2.Caption = 修改 ThenCommand1.Caption = 确定Command2.Caption = 取消ElseData1.Recordset.CancelUpdateCommand1.Caption = 添加Command2.Ca

36、ption = 修改End IfEnd SubPrivate Sub Command3_Click()msg = MsgBox(是否确定删除选定的记录,vbYesNo + vbCritical, 提示)If msg = 6 ThenData1.Recordset.DeleteData1.Recordset.MoveNextIf Data1.Recordset.EOF = True ThenData1.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command4_Click()Dim msg As Stringmsg = InputBox(请

37、输入要查询的学号:,提示信息)Data1.RecordSource = select * from stuinfo where stuid= & msg & Data1.RefreshIfData1.Recordset.RecordCount=0ThenMsgBox 没有符合条件的记录,vbOKOnly + vbInformation, 提示Data1.RecordSource = stuinfo Data1.RefreshEnd IfEnd SubPrivate Sub Command5_Click()If Data1.Recordset.EOF = True ThenData1.Recor

38、dset.MoveFirstElseData1.Recordset.MovePreviousEnd IfEnd SubPrivate Sub Command6_Click()If Data1.Recordset.EOF = True ThenData1.Recordset.MoveLastElseData1.Recordset.MoveNextEnd IfEnd SubPrivate Sub Command7_Click()Unload MeEnd Sub 15.7 Activex 数据对象及其使用 1571 ADO 控件在使用 ADO 据控件前,必须先通过“工程/ 部件”菜单命令选择“ Mi

39、crosoft ADO Data control6.0(0LE DB) ”选项,将 ADO 数据控 件添加到工具箱。 ADO 数据控件与 VisualBasic 的内部数据控件很相似,它允许使用ADO 数据控件的基本属性快速地创建与数据 库的连接。它可以实现以下功能: 连接本地数据库或远程数据库。打开指定的数据库表,或定义结构化查询语 言的查询、存储过程或该项数据库中表的视 图记录集合。将数据字段的数值传递给绑定的控件、可以 在这些控件显示和理发这些数值。添加新记录,或根据理更改显示出绑定的数 据控件中的数据通信来更新数据库。1572 ADO 数据控件的基本属性(1) ConnectionSt

40、ring 属性ADO 控件没有 DatabaseName 属性,它使用Connectionstring 属性与数据库建立连接。 该属性包含了用于与数据源建立连接的相 关信息,Connectionstri ng属性带有4个参 数,如下表 所示。Provide指定连接提供者的名称FileName指定数据源所对应的文件名RemoteProvide在远程数据服务器打开一个客户端时所用的数据源名称Remote Server在远程数据服务器打开一个主机端时所用的数据源名称(2) RecordSource 属性RecordSource 确定具体可访问的数据, 这些数据构成记录集对象Recordset。该属

41、性值可以是数据库中的单个表名,一个存储 查询,也可以是使用 SQL 查询语言的一个查 询字符串。(3) ConnectionTimeout 属性用于数据连接的超时设置,若在指定时 间内连接不成功显示超时信息。(4) MaxRecords 属性定义从一个查询中最多能返回的记录数。 1573 ADO 数据控件的方法和事件ADO数据控件的主要方法和事件与Data控 件的方法和事件一样。适用于data控件的 recordset 对 象 同 样 适 用 于 ADO 的 recordset 对象。如: addnew 、delete、 refresh、upd a te 等方法。15. 7. 4设置ADO常用

42、事件事力|笊叫AiIIMow当 I;、I; lhigkuT.:中5 -KcotxciAloVk-Kccotxk-i.MoVk-I.JSi-ln.OxK-.McVkrih 、1 k- co X Isn. Mo w 1J i on s、1 v co X Ls.k)ok tn;i fk-1 * co ex h* . Ak IX * *1 l co X ku. h I w、lk- co X k * .RkC|U- v、 1coXhh.Klsytil j _| -MoVkWjtnpkiWillChangeFieldlkKkh;iigkonpk-j: IIIMovl /:: / :i: Vai lk- .

43、 : Hli v二i: lIK hiing.rijd :- / :-WillChangeRetord 当执 j; Recordset,Update 、. Recordset,Dd de 、. 1 g lc IT. ,p kl 、lLcOxK.T. pd;nkncfi. KkcctxbiAjtKkllknch j _| -1 cotig milpk-I :叭i 11h;ii5-1o:atxl i: / ::15. 7. 5 使用绑定控件显示数据 在 ADO 中使用普通绑定控件(如文本框,组 合框、图片框等)来显示数据的方法与 Data 控件完全相同。只要将 datasource 属性设 置为相应

44、的控件名,Datafield属性设置为 相应的字段即可也。例 15-3 用 ADO 控件实现学生信息管理系统。实现步骤:添加ADO ActiveX控件,如下图:将此控件放入窗体,设置此控件的connectionstring 属性,这里是使用 ODBC 数据资源名称。在 ADO 控件上右击,出现如 下窗口:代码:Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal p

45、Recordset As ADODB.Recordset) Adodc1.Caption = 当前 记录号是: & Adodc1.Recordset.AbsolutePosition + 1 If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveFirst Command2.Enabled = FalseElseCommand2.Enabled = TrueEnd IfIf Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast Command6.Enabled = FalseElseC

46、ommand6.Enabled = TrueEnd IfEnd SubPrivate Sub Command1_Click()If Command1.Caption = 添加 ThenCommand1.Caption = 确定Command2.Caption = 取消Adodc1.Recordset.AddNewText1.SetFocusElseCommand1.Caption = 添加Command2.Caption = 修改Adodc1.Recordset.UpdateAdodc1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command2_C

47、lick()If Command2.Caption = 修改 ThenCommand1.Caption = 确定Command2.Caption = 取消ElseAdodc1.Recordset.CancelUpdateCommand1.Caption = 添加Command2.Caption = 修改End IfEnd SubPrivate Sub Command3_Click()msg = MsgBox(是否确定删除选定的记录,vbYesNo + vbCritical, 提示)If msg = 6 ThenAdodc1.Recordset.DeleteAdodc1.Recordset.Mo

48、veNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command4_Click()Dim msg As Stringmsg = In putBox(请输入要查询的学号:提示信息)Adodc1.Recordset.MoveFirstAdodc1.Recordset.Find stuid= & msg & ,If Adodc1.Recordset.EOF ThenMsgBox 没有符合条件的记录, vbOKOnly + vbInformation, 提示A

49、dodc1.RecordSource = stuinfoAdodc1.RefreshEnd IfEnd SubPrivate Sub Command5_Click()If Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveFirstElseAdodc1.Recordset.MovePrevious End IfEnd SubPrivate Sub Command6_Click()If Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastElseAdodc1.Recordset.

50、MoveNextEnd IfEnd SubPrivate Sub Command7_Click()Unload MeEnd Sub1576 工程 Datagrid 控件Datagrid 控件是一个类似天表格的控件,可 以通过行和列来显示 recordset 对象的记录 和字段,。用于编辑和浏览完整的数据库表 和查询。使用方法如下:1) 添加该组件,在部件选项卡中选择 “Microsoft DataGrid 6.0(OLE DB) ” 复选框(点出对号),之后确定之。如此 在控件箱中就有了这个组件。2) 在窗体上放置一下 ADO 控件,并设置 Connectiuonstring 和 record

51、source 属 性。3) 在窗体上放置一个 Datagrid 控件,并设 置 Datasource 属性为 ADO 控件名。以 student.mdb 为例:ADO 控件我 recordsource 属性为 student 中 的 stui nfo 表;Datagrid 控件的 Datasource 设置为ADO控件名。如下图:Datagride tui dstiiiL:=Ljriestusexstudep:=Lr tmEnttuina.i or20011001H张茜生物韵窃生物技术20021123张海男外语系英语教育20041108段杰男天文学院天文观测20031126李明华吉.数理学院物

52、理学20020691杨丽娟玄人文学院文秘141H 4 Adodcl kl1577 ADO 对象模型ADO对象模型定义了一组可以编程对象,可以实现OLE DB的几乎所有的功能。ADO对象模型 中包含了 7 个对象:Connection 对象Command 对象Parameter 对象Recordset 对象Field 对象Property 对象Error 对象ADO对象模型中还包含了 3个集合:Fields 集合Properties 集合Errors 集合 它们之间的关系如下图:ProtirtitfSL.ErrorsparBiiwterFieMFs-cpprtyPropertyRecofilsp

53、tHeldsPropertyProper- i辭PropertiesPirMi&tfrCormand1.Connection 对象Connection 对象用来与数据源建立连接、执行查询以及建立事务处理。2. Command 对象Command对象执行数据库操作命令,这些命令并不只限于查询串,而是依赖于数据库的OLE DB 供应者。3. Parameters 集合和 Parameter 对象Parameters 集合和 Parameter 对象为 Command 对象提供参数信息和数据。当且仅当 Comman d 对象执行的查询是一个带参数的查询时, Parameters 集合和 Parame

54、ter 对象才有用, Par ameter对象包含在Parameters集合中。4. Recordset 对象Recordset 对象用来操作查询返回的结果集,它可以在结果集中添加、删除、修改和移动记 录。当创建了一个 Recordset 对象时,一个游标也被自动创建了。可以用 Recordset 对象的CursorType属性来设置游标的类型。游标的类型有4种:仅能向前移动的游标、静态的游 标、键集游标和动态游标。5. Fields 集合和 Fields 对象Fields集合和Fields对象用来访问当前记录中的每一列的数据,可以用Fields对象创建 一个新记录、修改已存在的数据等。用 R

55、ecordset 对象的 AddNew、 Update 和 UpdateBatch 方法来添加新记录和更新记录。也可以用Fields对象来访问表中每一个字段的一些属性, 如下面的例子循环打印出表中当前记录的字段名称、类型和值。6. Properties 集合和 Property 对象ADO 对象有两种类型的属性:一种是内置的,另一种是动态的。内置的属性不出现在对象的 Proper ties集合中,而动态的属性是由OLE DB供应者定义的,它们出现在相应的ADO对象 的 Properties 集合中。习题十五1 数据库有 三种基本模型,它们是。A)关系、连接、嵌套 B)嵌套、层次、关系 C)网络

56、、层次、嵌套D)网状、戻次、关系2. 以下说法错误的是。A) 个表可以构成一个数据库B)多个表可以构成一个数据库C) 一个表中的每一条记录的各个数据项具有相同的数据类型D) 同一个字段的数据具有相同的数据类型3. 要利用数据控件返回数据库中的记录集,则需要设置属性。A) Connect B) Databasename C) Recordsource D) recordType4. Seek方法可以在记录中进行查找。A) table类型 B) sbapshot类型 C) Dynaset类型 D)以上三者5. 下列组关键select中不可缺少的。A) select、 from B) select、

57、 where C) from、orderbyD) select、 all6. 语句 select * from stuinfo where stusex=女中的”*”表示。A)所有表 B)指定表中的所有字段C)所有指定条件的记录D)所有记录7. 在使用 delete 方法删除当前记录后,记录指针位于。A)被删除记录上B)被删除记录上一条C)被删除记录下一条 D)记录集的第一条8. 使用 ADO 数据控件的 ConnectionString 属性与数据源建立相关信息,在属性页对话框中可以有种不同的连接方式。A)1B)2 C) 3 D) 49下列所显示的字符串中,字符串不包含在ADO数据控件的Co

58、nnectionString属性中。A) Mocrosoft Jet 3.51 OLE DB ProviderB) Data source=c:Mydb.mdbC) PerSist Security Info=FalseD) 2-adCmdTableO10 .要通过 ADO控件使用SQL语句,ADO命令类型(CommandType)应该设置为OA) 8-adCmdUnKnow B) 1-adCmdText C) 2-adCmdTable D) 4-adCmdStore二、填空题1. 数据库技术的发展经历了以下三个阶段:人工管理、文件管理、数据库管理。2. 要使绑定控件能通过数据控件data1连

59、接到数据库上,必须设置控件的Datasourc属性 为Data1|,要使绑定的控件能与有效的字段建立联系,则必须设置控件的Datafield属性。3. 记录集的Recordcount属性用于对RecordSet对象中的记录计数,为了获得准确值,应该 先使用Movelast方法再获得Recordcount属性值。4. 要对数据进行模糊查询,必须使用 區比较符。5查询stuinfo表中性别为“女”院系为“信息工程学院”的所有学生信息的SQL语句是 select * from stuinfo where stusex=女and studepartment=信息工程学院”6. 要在程序中通过代码使用A

60、DO对象,必须先为工程引用对象库。三、程序设计题 1.建立成绩管理数据库,其中包含学生成绩表,其结构如下:3各部分的代码实现如下1) ADO 控件记录移动事件代码Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)Adodc1.Caption = 当前记录号是: & Adodc1.Recordset.AbsolutePosition + 1If Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveFirstCommand2.Enabled = FalseElseCommand2.Enabled = TrueEnd IfIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastCommand6.Enabled = Fa

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!