VB程序设计教程集012.ppt_第1页
VB程序设计教程集012.ppt_第2页
VB程序设计教程集012.ppt_第3页
VB程序设计教程集012.ppt_第4页
VB程序设计教程集012.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

12.1数据库管理器,12.2数据控件的使用,12.3 SQL语言,12.4 ADO数据控件,第12章Visual Basic 6.0与数据库,退出,12.1数据库管理器,图12-1可视数据库管理器,利用可视化数据管理器可创建多种类型的数据库。创建步骤如下: 单击“文件”菜单下的“新建”菜单项,出现数据库类型选择菜单。单击数据库类型菜单中的Microsoft Access将出现版本子菜单,在版本菜单中选择要创建的数据库版本。,图12-2 创建数据库的菜单选项,2)选择要创建的数据库类型及版本后,出现新建数据库对话框,在此对话框中,输入要创建的数据库名“student.mdb”。 3)此时,在可视化数据库管理器窗口中出现“数据库窗口”和“SQL语句”窗口,如图12-3所示。“数据库窗口”以树型结构显示数据库中的所有对象,单击鼠标右键激活快捷菜单,执行“新建表”、“刷新列表“等菜单项。,图12-3 数据库窗口和SQL窗口,4)在“数据库窗口”中单击鼠标右键,出现快捷菜单,执行“新建表”菜单项便可为数据库添加一个新表。 5)屏幕出现如图12-4所示的“表结构”对话框。在这个对话框中,可输入新表的名称,并添加字段,也可从表中删除字段,还可以添加或删除作为索引的字段。,图12-4 “表结构”对话框,表12-1字段属性列表,图12-5 添加字段”对话框,6)添加字段完成后,单击“添加字段”对话框中的“关闭”按钮。回到如图12-6所示的“表结构”对话框,单击“添加索引”按钮,出现“添加索引”对话框,如图12-7所示,选择索引字段为“学号”,输入索引字段名为“ID”,单击“确定”按钮。,图12-6 添加字段后的“表结构”对话框,图12-7 添加索引对话框,7)完成上述步骤后,单击“生成表”按钮,就会在“数据库窗口”中出现“学生情况”表,如图12-8所示。,图12-8 生成新表后的“数据库窗口”,8)当一张表建立后,可以再建立另一张表。如果要在已经存在的数据库文件内增加一张新表,只需要在数据管理器文件菜单中选择打开数据库命令,其余操作过程与建立数据表的操作相同。 当表建好后,用鼠标左键双击出现在数据库窗口中的”学生情况”表名,打开图12-9所示的表格输入窗,选择对应命令进行添加、编辑、增删记录等操作。,图12-9 表格输入窗,12.2数据控件的使用,12.2.1 数据控件常用属性,12.2.2数据绑定控件常用属性,返回,退出,12.2.4数据控件上的对象,12.2.6数据控件的事件,12.2.7数据库记录的增删改操作,12.2.3使用数据控件操作数据库中的数据,12.2.5数据控件的常用方法,12.2.1 数据控件常用属性,Connect属性,Connect属性指定数据控件所要连接的数据库类型。,Visual Basic 60提供了7种可访问的数据库类型,Visual Basic可识别的数据库有:,1)Microsoft Access的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属性指定具体使用数据库的名称,包括所有的路径名。 如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名,而具体文件名放在RecordSource属性中。 如果在“属性”窗口中单击DatabasName属性右边的按钮,会出现一个公用对话框用于选择相应的数据库。 例如,下面语句设置了可访问的数据库名称: 如果连接一个Microsoft Access的数据库C:职员档案mdb,则Data1DatabaseName”C:职员档案mdb”;如果连接一个Foxpro数据库C:yang职员档案1dbf,因为Foxpro数据库只含有一个表,则Data1DatabaseName”C:yang”,RecordSource=”职员档案1dbf”。 如果未写数据库文件的扩展名,则缺省情况下为使用以.mdb为扩展名的数据库文件。,3)RecordSource属性,RecordSource属性确定具体可访问的数据,这些数据构成记录集对象Recordset。 4)RecordsetType属性 RecordsetType属性确定记录集类型。 5)ReadOnly属性 在对数据库只查看不修改时,通常将ReadOnly属性设置为True,而在运行时根据一定的条件,响应一定的指令后,才将它设置为False。 6)Exclusive属性 Exclusive属性值设置为True时,则在通过关闭数据库撤消这个设置前,其他任何人不能对数据库访问。这个属性的缺省值是False。,7)BOFAction、EOFAction属性 当BOFAction值为0,控件重定位到第一个记录;BOFAction值为1,移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件。 当EOFAction值为0,控件重定位到最后一个记录;当EOFAction值为1,移过记录集结束位,定位到一个无效记录,触发数据控件对最后一个记录的无效事件;EOFAction值为2,向记录集加入新的空记录,可以对新纪录进行编辑,移动记录指针新纪录写入数据库。,12.2.2数据绑定控件常用属性,要使文本等控件与数据控件捆绑在一起,成为数据控件的绑定控件。并且能够受到数据库约束,必须在运行时对这些控件的两个属性进行设置:,1)DataSource属性,DataSource属性用来将一个有效的数据控件与一个数据库连接。,2)DataFleld属性,DataFleld属性设置数据库有效的字段与绑定控件建立联系。,图12-10 绑定控件、数据控件和数据库三者的关系,12.2.3使用数据控件操作数据库中的数据,表12-2 窗体属性表,例91、设计一窗体,在窗体内通过文本框等绑定控件显示9.1节中建立的学生情况表内的记录。,不需编写任何代码,就可浏览表中的内容。单击运行按钮就可出现如图12-11所示4个文本框分别显示学号,姓名,性别,和出生年月的内容。,使用数据控件对象的4个箭头可遍历整个记录集中的记录。 通过DBList控件和DBCombo控件浏览学生情况表内的记录时,DBList控件和DBCombo控件不是Visual Basic工具箱内的默认控件,需要在开发环境中选择“工程”|“部件”菜单命令,并在随即出现的对话框中选择Microsoft Data Bound List Controls选项,将它们添加到工具箱中。,图12-11 学生情况表显示界面,例12-2:设计一个窗体,通过数据网格控件浏览学生情况表内的记录。参见图12-12所示。,图12-12 通过数据网格控件浏览学生情况表,使用DATA数据控件时可使用MsflexGrid网格控件或VB5.0提供的数据网格控件DBGrid。MsflexGrid控件与DBGrid控件都不是Visual Basic工具箱内的默认控件,需要在开发环境中选择“工程”主菜单中的“添加部件”命令,并在随即出现的对话框中选择Microsoft Flex Grid Control6.0或Microsoft Data Bound Control5.0,将其添加到工具箱中。,表12-3 窗体属性表,数据控件是依靠数据对象来获取对数据访问的,与其相关的数据对象有: 1 Database对象 Database对象是物理数据库的逻辑表示。数据控件通过DatabaseName属性连接到一个具体的数据库,并通过它的Database对象表现出来。 除了数据控件获取Database对象之外,还可以在程序中定义Database对象,并通过OpenDatabase()函数实现对物理数据库的连接;或者将数据控件的Database对象传递给被定义的Database对象。 例如以下语句: Dim Ds1 As Database 定义数据对象 Dim Ds2 As Database Set Ds1= OpenDatabase(“e:VB|class.mdb) 使Ds1获取物理数据库 Set Ds2=Me.data1. Database 将数据控件的Database对象传递给Ds2,12.2.4数据控件上的对象,2 Recordset对象 Recordset对象代表一组与数据库相关的逻辑记录集合。它所对应的数据来源可以是数据表,也可以是和SQL语言中查询语句(SELECT)有关的查询结果。 Recordset对象有三种类型: Table类型:记录集为表集,可以显示、添加、删除和修改,具有较好的更新性能。 Dynaset类型:记录集为动态集,可以显示、添加、删除和修改,并具有较大的操作灵活性。 Snapshot类型:记录集为快照集,只能显示,具有较好的显示速度。 除了Data控件获取Recordset对象之外,还可以在程序中定义Recordset对象,并通过函数获得数据。 Dim Ds As Database 定义数据对象 Dim Rs As Recorderset 定义记录对象 Set Ds= OpenDatabase(“e:VB|class.mdb) 使Ds获取物理数据库 Set Rs=Me.data1. Database. OpenRecordse(“SElECT *FROM 学生情况”,dbOpenDynaset) 以动态集方式打开从“学生情况”数据表取得的SQL查询,传给Rs对象 Set Me.data1. Recorderset=. Rs,12.2.5数据控件的常用方法,1 Refresh方法,如果在设计状态没有为打开数据控件的有关属性全部赋值,或当RecordSource在运行时 被改变后,必须使用激活数据控件的Refresh方法激活这些变化。,2 UpdateCountrols方法,UpdateCountrols方法可以将数据从数据库中重新读到 被数据控件绑定的空件内。使用UpdateCountrols方法终止用户对绑定内控件的修改。,3 UpdateRecord方法,当对绑定内的控件修改后,数据控件需要移动记录集的指针才能保存修改,如果使用UpdateRecord方法可强制数据控件将绑定控件内的数据写入到数据库中而不再触发Vaildate事件。在代码中用该方法修改。,12.2.6数据控件的事件,1 Reposition事件,Reposition事件发生在一条记录成为当前记录后。,只要改变记录集的指针使其从一条指针移到另一条记录。会产生Reposition事件,可以在该事件过程中建立程序,可反映出记录位置、记录总数等。,2 Validate事件,当要移动记录指针前,修改与删除记录前或卸载含有数据控件的窗体时触发Validate事件。Validate事件检查被数据控绑定的控件内的数据是否发生变化。它通过save参数()True或False)判断是否有数据发生变化,Action参数判断哪一种操作触发了Validate事件。Action参数可为表12-4中的值:,表12-4 Validate事件的Action参数表,对记录的操作能够通过Recordset对象的方法实现。其常用方法有: 1)AddNew方法 加入一条新记录到记录集内存缓冲区。 例如:Rs. AddNew 2) Edit方法 允许对当前记录进行修改。 3) Delete方法 用于删除当前记录。 4) Update方法 把内存缓冲区的内容写进数据库文件,保存对数据库所作的改动。 5) Close方法 关闭记录集和数据库。该方法也能用在数据库对象上,将数据库关闭。 Rs.Close 关闭记录集 Ds.Close 关闭数据库,12.2.7数据库记录的增删改操作,5) Move方法 使用Move方法可代替对数据库控件对象的4个箭头的操作遍历整个记录几种的记录。 5种Move方法是: (1)MoveFirst方法移至第一条记录 (2)MoveLast方法移至最后一条记录 (3)MoveNext方法移至下一条记录 (4)MovePrevious方法移至上一条记录 (5)Moven方法向前或向后移动n条记录,n为指定的数值。,例12-3:在窗体上用4个命令按钮代替例12-1数据控件对象的4个箭头的操作。 窗体属性设置如下:在窗体上增加4个命令按钮,将数据控件的Visible属性设置为False.。通过对4个按钮的编程代替数据控件的4个箭头。窗体如图12-13所示。,图12-13用按钮代替数据控件,上一条和下一条按钮的代码需要考虑Recordset对象的边界,可用Bof和Eof属性检测记录集的首尾,如越界,则用指令定位到第一条或最后一条记录。程序代码如下: Private Sub Command1_Click() Data1.Recordset.MoveFirst End Sub Private Sub Command2_Click() Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst End Sub Private Sub Command3_Click() Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End Sub Private Sub Command4_Click() Data1.Recordset.MoveLast End Sub,例12-4:在例12-1的基础上增加5个按钮:新增、删除、修改、查找和放弃。如图12-14所示。,表12-5 控件属性设置,图12-14 建立增删改查询功能,Dim editcheck As Boolean 全局变量 Private Sub Command1_Click() On Error Resume Next commadn2.Enabled = Not Command2.Enabled Command3.Enabled = Not Command3.Enabled Command4.Enabled = Not Command4.Enabled Command5.Enabled = Not Command5.Enabled If Command1.Caption = “添加“ Then Command1.Caption = “确认“ Data1.Recordset.AddNew Text1.SetFocus Else Command1.Caption = “添加“ Data1.Recordset.Updata Data1.Recordset.MoveLast End If End Sub,Private Sub Command2_Click() Dim mst, res As String mst = “您是否真的要删除?“ On Error Resume Next res = MsgBox(mst, vbOKCancel + vbExclamation) Select Case res Case vbOK Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End Select End Sub,Private Sub Command3_Click() On Error Resume Next commadn1.Enabled = Not Command1.Enabled Command2.Enabled = Not Command2.Enabled Command4.Enabled = Not Command4.Enabled Command5.Enabled = Not Command5.Enabled If Command3.Caption = “修改“ Then Command3.Caption = “确认”: Data1.Recordset.Edit: Text1.SetFocus Else Command3.Caption = “修改”: Data1.Recordset.Updata End If End Sub Private Sub Command4_Click() On Error Resume Next commadn1.Caption = “添加“: Command3.Caption = “修改“ Command1.Enabled = True: Command2.Enabled = True Command3.Enabled = True: Command4.Enabled = False Command5.Enabled = True Data1.UpdateControls Data1.Recordset.MoveLast End Sub,Private Sub Command5_Click() Dim mno As String mno = InputBox$(“请输入学号“, “查找窗“) Data1.Recordset.FindFirst “学号=“ & mno & “ If Data1.Recordset.NoMatch Then MsgBox “无此学号!“, , “提示“ End Sub Private Sub Command6_Click() student.Hide:Form1.Show End Sub Private Sub Data1_Reposition() Data1.Caption = Data1.Recordset.AbsolutePosition + 1 End Sub,Private Sub Data1_Validate(Action As Integer, Save As Integer) If editcheck = True Then If Text1.Text = “ And (Action = 6 Or Text1.DataChanged) Then MsgBox “ 数据不完整,必须要有学号!“ Data1.UpdateControls End If If Action = 1 And Action = 4 Then Command1.Caption = “添加“: Command3.Caption = “修改“ Command1.Enabled = True: Command2.Enabled = True Command3.Enabled = True: Command4.Enabled = False End If End If End Sub Private Sub Form_Load() editcheck = False Command1.Enabled = True: Command2.Enabled = True Command3.Enabled = True: Command4.Enabled = False Command5.Enabled = True End Sub,12.3.1 SQL语言的组成,SQL(结构化查询语言,Structure Query Language)是操作数据库的工业标准语言,许多数据库和软件系统都支持SQL或提供SQL语言接口。这一节将向用户介绍SQL的常用语句。,1SQL命令,SQL的功能实际上包括查询、操作、定义和控制四个方面。其中最常用的是查询功能,其次为数据定义功能。,表12-7 SQL基本命令动词,12.3 SQL语言,2SQL的数据定义功能,SQL的数据定义功能是通过它的DDL语句实现的。,表12-8 SQL数据定义语句,3SQL的数据查询功能,SQL语言的核心是查询语句,它的基本格式为:,SELECT列名表名,FROM基本表名或视图名,WHERE条件表达式,GROUP BY 列名l HAVING内部函数表达式,ORDER BY 列名2 ASC或DESC 31,12.3.2 SQL语句使用举例,在程序运行时,可以通过使用SQL语句设置数据控件的RecordSource属性,这样可以建立与数据控件相关联的数据集。在使用SQL语句的查询功能时并不影响数据库中的任何数据,只是在数据库中检索符合某种条件的数据记录。,例12-5: DataRecordSource“SELECT姓名,学号FROM 学生情况” 作用是将“”表中“姓名”、“学号”两列的所有记录都挑选出来。这样与数据控件相关联的数据集只是该SQL查询的结果。 例12-6: DataRecordSource“SELECT*FROM ” 其中的“*表示查询该表中的所有列。 例12-7:DataRecordSource;“SELECT 姓名FROM 学生情况WHERE 性别女” 该查询语句挑选表中性别为“女”的记录的“姓名”字段。,例12-8:将例12-4中的查找功能改用SQL语句处理,显示性别为男的学生记录 将例12-4中命令按钮Command5_click事件改为如下代码: Dim xingbie AS string Xingbie=InputBox$(“请输入性别”,”查找窗”) Data1.Recordsource=”Select * From 学生情况 Where 性别=”&xingbie&” Data1.Refresh If Data1.Recordset.EOF Then Msgbox”无此性别的人!”,”提示” Data1.Recordsource=”学生情况” Data1. Refresh End If 程序中“Select *”选择表中所有字段,“From 学生情况”指定数据来源,Where 性别=”&xingbie&”构成查询条件,用于过滤表中记录,Data1. Refresh方法激活这些变化。此时,若Data1.Recordset.EOF为True,表示记录过滤后无数据,重新打开原来的学生情况表。,表12-9 class表,表12-10 lesson表,表12-11 student表,例12-9:数据库的多表连接操作和SQL语言的使用方法。,1、若数据库包含3个数据表student、lesson和class,结构分别如下表12-9、12-10和12-11。,(3) 程序代码如下: Private Sub Form_Load() Dim sql As String Dim db As Database Set db = OpenDatabase(“D:program filesvisual basic6.ostudent.mdb “) On Error Resume Next sql = “select lesson.*,class.* into temp from lesson,class where lesson.课程号=class.课程号“ db.Execute “drop table temp;“ db.Execute sql Data1.RecordSource = “select student.学号,student.姓名,temp.教师,temp.课程名,temp.成绩 from student,temp where student.学号=temp.学号“ Data1.Refresh Data1.Visible = False End Sub Private Sub Command1_Click() End End Sub,例12-10:设计一个窗体,用SQL语句从例12-9中数据库的3个数据表student、lesson和class表中选择数据构成记录集,并通过数据控件浏览记录集。记录集需包含字段:学号,姓名,学期,课程名,成绩,要求记录按学号的升序排列。显示运行界面参见图12-16。,图12-16 运行界面,(1) 建立新文件。 (2) 建立窗体。窗体对象属性如下表。,表12-12 窗体属性表,(3) 程序代码: Private sub Form1_load data1.recordsource=”select student.学号,student.姓名,class.学期,lesson.课程名,class.成绩 from student,lesson,class where student.学号=class.学号 and class.课程号=lesson.课程号 order by student.学号” End sub Private sub Command1_click() End End sub,12.4 ADO数据控件,ADO数据控件是ActiveX外部控件,它的用途以及外形都和Data控件相似,但它是通过Microsoft ActiveX数据对象(ADO)来建立对数据源的连接的,凡是符合OLEDB规范的数据源都能连接。ADO数据控件通过属性实现了对数据源的连接。创建连接时,可以采用下列源之一:一个连接字符串,一个OLE DB文件(MDL),一个ODBC数据源名称(DSN)。当使用DSN时,无须更改控件的任何其他属性。,12.4.1使用ADO数据控件,1ConnectionStrng属性,ConnectionString属性包含了用于与数据源建立连接的相关信息。ConnectionString属性带有4个参数如表12-13所示。,表12-13 ConnectionString属性参数,2RecordSource属性,RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。,3ConnectionTimeout属性,用于数据连接的超时设定,若在指定时间内连接不成功显示超时信息。,4MaxRecords属性,定义从一个查询中最多能返回的记录数。,例12-11下面通过使用ADO数据控件和DATAGRID数据网格控件连接Studentmdb实现例12-2的功能,来说明ADO数据控件的使用。运行界面如图12-17。,实现步骤: 1) 在窗体上放置ADO数据控件,控件名采用默认名“Adodcl” 2)单击属性窗口中的ConnectionString属性右边的“”按钮,弹出属性页对话框, 如图12-18所示。,图12-18 ConnectionString属性页,图12-17 运行界面,在该对话框中允许通过三种不同的方式连接数据源。 “使用Data Link文件”表示通过一个连接文件来完成。在Windows桌面上创建数据连接文件的过程为: (1)用鼠标右击桌面,在弹出的快捷菜单中选择“新建”子菜单的“Microsoft数据链接”命令; (2)桌面上产生一个数据链接文件图标,命名链接文件名; (3)用鼠标右击图标,执行快捷菜单中的“属性”命令; (4)在打开的属性对话框中通过提供者与链接选项卡链接指定的数据库。 “使用ODBC数据资源名称”可以通过下拉菜单选择某个创建好的数据源名称(DSN)作为数据来源。 “使用链接字符串”只需要单击“生成”按钮,通过选项设置自动产生连接字符串的内容。,3)采用“使用链接字符串”方式连接数据源。,图12-19 数据链接属性窗,4)单击属性窗口中的RecordSource属性右边的“”按钮,弹出

温馨提示

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

评论

0/150

提交评论