VB数据库的链接与访问.docx
- 文档编号:9813705
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:51
- 大小:281.74KB
VB数据库的链接与访问.docx
《VB数据库的链接与访问.docx》由会员分享,可在线阅读,更多相关《VB数据库的链接与访问.docx(51页珍藏版)》请在冰豆网上搜索。
VB数据库的链接与访问
第7章 数据库应用
VB提供了大量的数据库应用方面的工具。
本章从介绍VB数据库系统的体系结构入手,学习构造设计数据库及数据表。
然后,描述了ActiveXDataObjects、DAO对象模型、数据环境、ADODB的数据库链接和访问方式。
同时,还介绍了基于这些访问方式的程序设计方法和举例。
学习重点:
● 数据库和数据表的基本概念
● ADO控件、DAO对象模型、ADODB、数据环境
● 对象绑定、数据源
● 记录集、记录指针
7.1 VisualBasic的数据库系统
本章通过介绍VB数据库系统的体系结构,深入了解VB数据库的具体内容和处理方法。
VB的ADO(ActiveXDataObjects)技术兼容并包含了以前的数据访问对象DAO(DataAccessObject)和远程数据对象RDO(RemoteDataObject)的数据库处理功能。
ADO技术对各种类型的数据源具有更灵活的对象模型,更简单直接的处理方法。
它通过OLEDB技术,既能访问本地的数据库,又能访问远程数据库;既能通过数据库引擎Jet,又能通过ODBC,甚至直接提供SQL,ORACLE大型数据库的链接方式访问数据源。
在实际应用中,它能够处理任何类型的数据,而不考虑它们的格式和存储方法,比如,可以访问驻留在Excel的电子数据表,文本文件,甚至邮件服务器,诸如MicrosoftExchange中的数据。
尤其ADO在关键的Internet方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,从而为其提供了轻量、高性能的数据接口。
7.1.1 VisualBasic数据库系统的体系结构
VisualBasic数据库系统由物理数据库、OLEDB提供程序、用户应用程序三部分组成。
OLEDB提供程序将物理数据库与应用程序连接起来,使用户应用程序层的操作更加规范,简单。
你不必关心数据源的格式和存储方式,无论数据源是本地的还是远程的都无关紧要。
1. 物理数据库
物理数据库是按某种格式组织,并按某种方式存储的数据源集合。
一个数据库可以包含若干个有关的数据表,数据表是一种按行和列排列的二维表格。
例如,在Student.mdb中,可以有一个学生基本情况表StudentBase(见表7-1),一个成绩表StudentMark(见表7-2)等。
表7-1 学生基本情况表StudentBase
学号
姓名
性别
年龄
出生日期
021003
林小芳
女
18
1984-03-16
021008
金大力
男
19
1983-12-08
数据表中的每一列应存放具有类似意义的、相同类型的数据。
我们把这样的列称作为字段,每个字段有自己的数据类型和长度,若干个字段组成了数据表的结构。
例如,StudentBase数据表可以由学号StudentID、姓名Name、性别Sex、年龄Age、出生日期BirthDay等字段组成。
StudentMark数据表可以由学号StudentID、课程名称CourseName、成绩Mark、考试日期ExamDate等字段组成。
表7-2 学生成绩表StudentMark
学号
课程名称
分数
考试日期
021003
VB程序设计
91
2002-06-26
021003
英语
86
2002-06-28
021008
VB程序设计
75
2002-06-26
数据表中的每一行数据称作为一条数据记录,它是按数据表字段有序排列的一个完整描述。
例如,021003,林小芳,女,18,1984-03-16描述了一个同学StudentBase的完整信息。
021003,VB程序设计,91,2002-06-26则描述了一个同学StudentMark的记录信息。
数据表之间还可以通过关键字段(简称关键字)进行关联运算,例如,在StudentBase数据表中的某一位同学,可以通过他的学号StudentID作为关键字,在StudentMark数据表中将其所有选修课程的考试情况关联运算出来。
2. OLEDB提供程序
OLEDB提供程序其实是一种驱动程序或数据处理低层接口,它是由一组ActiveX的DLL动态链接库文件组成。
由于接口比较复杂,差异性较大,因此,不能在VB中直接访问OLEDB。
而是采用通过ADO对象访问OLEDB的方法,从而实现各种OLEDB数据的访问。
ActiveX数据对象ADO封装,实际上实现了OLEDB的所有功能。
因此,在VB中ADO对象使不同的数据库类型的操作是相同的。
3. 用户应用程序
用户应用程序包括用户界面和应用程序代码。
应用程序代码对数据库操作的请求,经OLEDB的链接,分解并解释成一系列对物理数据库的操作指令,执行的结果再经OLEDB回传给应用程序的用户界面,以供浏览或进一步处理。
7.1.2 VisualBasic的数据库链接和访问
应用程序对数据库的处理主要由数据定义语言(DDL)和数据操作语言(DML)两部分组成。
DDL的任务是定义和创建数据库本身的属性和方法,包括它的工作区、数据库、数据表、字段集合、索引和关系等。
当我们用这种特定的对象变量定义好相关数据库的各个层次的结构时,就可以在用户应用程序中通过这些对象变量去访问我们想操作的数据库。
此时,我们也可以说,用户应用程序与数据库建立了链接。
不管这种链接是本地的数据库还是远程的数据库;不管是VB默认的MicrosoftAccess数据库,还是其他数据库(例如,Foxpro,Dbase,Paradox),甚至是电子数据表、邮件、文本数据文件,一旦建立了数据库链接,以后的访问操作基本上是一样的。
建立链接只需一次性定义。
DML的任务是在DDL的基础上对数据库进行数据访问,包括浏览、新增、删除、编辑、查找、更新等。
根据以上分析,对数据库的处理主要由DDL和DML两大部分组成,即在用户应用程序中常说的“链接”和“访问”。
VB有四种数据库链接与访问的方式:
OLEDB的ADO(ActiveX数据对象)控件链接与访问方式、DAO(数据访问对象)对象模型分层结构链接与访问方式、通过数据环境设计器的链接与访问方式、使用ADODB对象的链接与访问方式。
1. ADO控件链接与访问方式
使用ADOdata控件只要对数据库、OLEDB提供程序和数据源(数据表或SQL数据集)进行适当的选择定义,就可以方便,迅速,简单地建立起用户应用程序与数据库操作之间的链接。
通过绑定控件(例如:
OLEDB控件DataGrid、DataList、DataCombo、基本控件TextBox、CheckBox、Label、PictureBox、ComboBox、ListBox等)的布局配合,在ADOdata控件的控制下产生联动效应,在用户界面上直接反映数据库数据。
进一步通过ADOdata的Recordset方法,可以进行数据库的记录新增、删除,编辑、查找、更新等操作。
这种方式既可以在设计时静态建立链接,也可以在运行时进行动态链接,甚至必要时,可以分别更改表的来源方式、更换不同表源、更换其他数据库。
ADO控件的使用方法是VB的最强有力手段之一,因此,Microsoft推荐尽量使用该方法。
2. DAO的对象模型链接与访问方式
DAO对象模型以嵌套式“对象含集合”的分层结构组成,以DBEngine(引擎)对象为顶层,它可以定义含若干WorkSpace(工作区)对象的集合;每个WorkSpace对象又可定义含若干DataBase(数据库)对象的集合;每个DataBase对象又可定义含若干TableDef(数据表)对象的集合;每个TabledDef对象又可定义含若干Field(字段)对象和索引(Index)对象的集合。
对象模型分层定义,建立起一个数据库的完整链接后,就可以分层嵌套引用对应层的对象变量或其下的集合对象,并且可以响应自己的事件和执行自己的方法。
通过用户应用程序代码可以直接、微观、灵活地操作数据库数据。
DAO完全在运行时进行链接和访问。
尽管这种方式,在程序设计时代码较多,对象变量群庞大,过程烦琐复杂,但在特定场合,还有一定的可用性。
比如,在需要动态产生数据表结构的场合下,它的代码设计自由度就较大。
这种方式的链接,开销较省,速度较快,而且与VB以往版本兼容性较好。
3. 数据环境设计器的链接与访问方式
数据环境设计器(DataEnvironmentdesigner)为创建编程运行时数据访问提供了一个交互的设计时环境。
在设计时,您不可以对Connection下的Command的已经定义好的内容进行变更,但可以更换另一个已经预先定义过的Command对象。
您也可以拖动DataEnvironment对象到窗体或报表来创建数据绑定的控件,尤其适用于在多个窗体中需建立数据库链接,或在报表中需建立数据库链接的场合。
一旦建立了链接,就会自动产生类似Recordset的rsCommandTable对象,以供各种场合进行数据访问。
这种方式,完全基于可视化的基础。
4. 使用ADODB的链接与访问方式
这是VB的新对象,通过ADODB对象可以全部在应用程序的运行时建立数据库和数据表的链接,并通过相应的记录集Recordset访问数据源,同时,还可以绑定相关控件,方便地进行交互界面设计和控制。
7.2 可视化数据管理器
在VB中通过数据访问控件或数据访问对象(DAO)可以访问下列数据库:
● JET数据库,即MicrosoftAccess的mdb文件。
● ISAM数据库,如:
dBase,FoxPro等。
● ODBC(开放式数据库互连)数据库,凡是遵循ODBC标准的客户/服务器数据库,如MicrosoftSQLServer,Oracle等。
一般来说,如果要开发一个小型数据库系统,用Access数据库比较合适,要开发大、中型的数据库系统用ODBC数据库更为适宜。
VB默认的是Access数据库。
建立Access数据库有两种方法:
一是在MicrosoftAccess中建立数据库;二是在VB中直接创建。
这里我们主要介绍利用VB提供的可视化数据管理器来建立我们先前描述的Student.mdb数据库和其下的StudentBase数据表。
【例7-1】建立学生数据库Student.mdb。
在该数据库里,建立数据表StudentBase“学生基本情况表”(见表7-1),数据表StudentMark“学生成绩表”(见表7-2)。
具体操作步骤如下。
1)从菜单栏选择“外接程序”/“可视化数据管理器”,进入VisData窗口。
2)选择菜单:
“文件”/“新建”/“MicrosoftAccees”/“Version7.0MDB”,此时,出现“选择要创建的MicrosoftAccess数据库”对话框。
3)在对话框中选择存放的合适目录,在文件名处填入“Student”,扩展名默认为mdb,单击“保存”按钮,系统自动产生Student.mdb数据库。
4)在“数据库窗口”空白处单击鼠标右键,弹出快捷菜单,选择“新建表”,出现“表结构”窗口。
在“表结构”中首先填入表名称“StudentBase”,单击“添加字段”按钮,出现“添加字段”窗口。
如图7-1所示,填入它的第一个字段StudentID的有关信息(类型:
Text;大小:
50)。
单击“确定”按钮,在“表结构”窗口里新增了一个StudentID字段。
5)继续在“添加字段”窗口里依次增加字段:
Name(Text,50),Sex(Boolean,1),Age(Integer,2),BirthDay(Date/Time,8)。
最后,单击“关闭”按钮,返回“表结构”窗口,如图7-2所示。
6)单击“生成表”按钮,建立StudentBase数据表,如图7-3左窗“数据库窗口”所示。
7)用同样方法,可以建立数据表StudentMark。
它包含字段StudentID(Text,50),CourseName(Text,50),Mark(Integer,2),ExamDate(Date/Time,8)。
8)如果要输入数据可以在“数据库窗口”中鼠标右键单击StudentBase数据表,弹出快捷菜单,选择“打开”;或双击左键;或在“SQL语句”窗口中输入Select*fromStudentBase语句后,单击“执行”按钮,出现如图7-3所示的数据表编辑窗口。
9)在数据编辑窗口里单击“添加”按钮,出现“添加记录”的编辑窗口,如图7-4所示。
分别输入981010,李慈凯,true,22,1978-02-16,再单击“更新”按钮,存入数据表中。
重复添加,直至结束。
10)如要修改,可单击“编辑”按钮;如要删除,可单击“删除”按钮;如要结束,可单击“关闭”按钮。
11)最后,退出“可视化数据管理器”,返回VB系统。
必要时,可以再次进入“可视化数据管理器”对数据库、数据表、字段、记录数据进行浏览、编辑、添加、删除、排序、过滤、查找等操作。
如需提供进一步的操作功能,可直接进入MicrosoftAccess,操作基本相同,使用更加方便,提供的功能更加强大。
7.3 VB数据库的链接与访问
本节详细介绍了数据库的ADO(ActiveX数据对象)控件链接与访问方式、DAO(数据访问对象)对象模型分层结构链接与访问方式、通过数据环境设计器的链接与访问方式、使用ADODB对象的链接与访问方式。
7.3.1 使用ADO控件建立数据库链接和数据访问
使用ADOdata控件,可以快速简便地建立数据库链接,配合数据绑定控件,进行数据快速浏览,这是目前最常用的方法之一,同时介绍了数据记录集Recordset方法的使用。
1. ADOdata控件
ADOdata是一个ActiveX控件,需要从菜单栏选择“工程”/“部件”,在“控件”选项卡中选择“MicrosoftADODataControl6.0(OLEDB)”,单击“确定”按钮,才会在工具箱中出现Adodc控件图标,如图7-5a所示。
将该控件加入窗体,它是一个具有四个箭头按钮的图形控件,如图7-5b所示。
建立Adodc控件与数据库的链接按如下操作步骤:
1) 进入Adodc属性定义:
在Adodc控件上单击鼠标右键,选择“Adodc属性”菜单;或者在图7-6a“属性”窗口里选择“自定义”项,进入“属性页”,如图7-6b所示。
2)
“通用”选项卡中,选择“使用连接字符串”选项,再单击“生成”按钮,出现“数据链接属性”窗口的“提供者”选项卡,如图7-7所示。
3)
选择MicrosoftJet3.51OLEDBProvider,再单击“下一步”按钮,出现“连接”选项卡,单击浏览钮,选择合适路径下的数据库Student.mdb,如图7-8所示。
再单击“测试连接”按钮,出现“测试连接成功”信息。
最后,单击“确定”按钮,返回图7-6所示的“属性页”,在“使用连接字符串”下已经表明数据库与Adodc控件连接成功。
4) 选择“记录源”选项卡,如图7-9所示。
在“命令类型”下拉框中选择“2-adCmdTable”选项,在“表和存储过程名称”下拉框中选择数据表StudentBase;或在“命令类型”下拉框中选择“1-adCmdText”选项,在“命令文本(SQL)”处输入SQL命令(比如,select * from StudentBase),获取数据表子集。
单击“确定”按钮,Adodc控件与数据库的数据表链接设置完毕。
综上所述,Adodc与数据库的链接主要定义了Adodc的三个属性:
● ConnectionString=”Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=E:
\Xjldoc\VB6教学\VB6实验\Student.mdb”
● CommandType=2(adCmdTable)
● RecordSource=”StudentBase”(最终,关联到数据表或数据源集)
或者
● CommandType=1(adCmdText)
● RecordSource=”Select * form StudentBase”(最终,关联到SQL数据源)
除此之外,Adodc还有一些可以利用的属性(见表7-3)和事件(见表7-4)。
表7-3 Adodc控件的常见属性
属性
注释
EOFAction
遇EOF时的处理:
0-停留在尾记录
1-停留在EOF处
2-允许新增
BOFAction
遇BOF时的处理:
0-停留在首记录
1-停留在BOF处
Visible
当使用ADOdata控件仅仅为了链接,不需要可见时,设置True。
Caption
设置ADOdata的标题名称。
Orientation
0-AdHorizontal(水平)
1-adVertical(垂直)
Enabled
使有效(True)
表7-4 Adodc控件的事件
事件
产生条件
WillMove
当执行Recordset.Open、Recordset.Move组、Recordset.BookMark、Recordset.AddNew、Recordset.Delete、Recordset.Requery、Recordset.Resync方法时(当ADO记录指针将要产生移动时发生)。
MoveComplete
在WillMove事件之后(当ADOdata记录指针移动后发生)。
WillChangeField
在Value属性更改之前。
FieldChangeComplete
在WillChangeField事件之后。
WillChangeRecord
当执行Recordset.Update、Recordset.delete、Recordset.CancelUpdate、Recordset.UpdateBatch、Recordset.CancelBatch方法时。
RecordChangeComplete
在WillChangeReord事件之后。
WillCahngeRecordset
在执行Recordset.Requery、Recordset.Resync、Recordset.Close、Recordset.Open、Recordset.Filter方法时。
RecordsetChangeComplete
在WillChangeRecordset事件之后。
InfoMessage
当数据提供者返回一个结果时。
2. Data-Bound(绑定)控件
虽然ADODC控件具有存取数据库记录信息的能力,但却没有显示数据的功能,这需要用到数据绑定控件。
所谓“绑定”就是控件源源不断地从Adodc1中获取对应数据记录。
任何绑定控件,最关键的是两个属性:
“DataSource”和“DataField”。
● DataSource:
绑定数据源控件。
一般为Adodc控件的对象名,使数据源记录指针所指向的当前信息与绑定控件同步。
● DataField:
绑定数据源的字段。
建立一个独立数据控件与绑定数据源记录指针指向的记录信息中某字段的数据联动。
● DataFormat:
绑定控件显示数据的格式。
尤其是日期、时间、财务数据、货币、图片等特殊格式。
除了基本控件TextBox,Label,CheckBox,ComboBox,ListBox,PictureBox等可以作为绑定控件外,VB还提供了ActiveX的绑定控件,如DataGrid,DataCombo,DataList,MicrosoftChar等OLEDB控件,其他还有DateTimePicker,HierarchicalFlexGrid,MonthView等也是很精彩的绑定控件。
甚至用户可以创建自己的数据绑定ActiveX控件。
下面对图7-10运行实例中的主要绑定控件类型进行说明。
1) Label、TextBox、CheckBox绑定控件
【例7-2】用Label、TextBox、CheckBox控件分别绑定数据库中StudentBase数据表的学生学号、姓名、性别、年龄、出生日期字段信息。
布局如图7-10所示,直接将Label、TextBox、CheckBox控件加入窗体。
对相应的绑定控件,如标签、文本框、复选框控件,设置它们的DataSource、DataField等属性。
如表7-5所示。
必要时,可以进一步设置其DataFormat,以适合数据格式(例如:
txtBirthDay)。
表7-5 例7-2中Label、TextBox、checkBox绑定控件的设置
控件名
DataSource
DataField
DataFormat
解释
LblStudentID
Adodc1
StudentID
学号
TxtName
Adodc1
Name
姓名
chkSex
Adodc1
Sex
性别
txtAge
Adodc1
Age
年龄
txtBirthDay
Adodc1
BirthDay
日期:
dddd年m月d日
出生日期
2) DataGrid绑定控件
在部件中,新增“MicrosoftDataGridControl6.0(OLEDB)”ActiveX控件DataGrid。
从工具箱中添加入窗体。
最简单、最快速地使用只需设置其DataSource=Adodc1即可。
如果要仔细对DataGrid进行修饰,可以先选中它,单击右键,在快捷菜单中选“检索字段”,再选“编辑”,可以逐个设置其网格大小、删除、新增网格列。
选择“属性”可以设置DataGrid属性,例如,“通用”页中可以输入标题显示名称,表格总体属性(见图7-11a);“列”页中可以设置列标题的名称(见图7-11b)。
其它还有键盘、布局、颜色、字体、拆分、格式等页的属性设置。
最后的DataGrid属性设置结果,如图7-10中的“学生基本情况表”所示。
选择或浏览指定某学生,下面的绑定控件就能同步显示该学生的绑定字段信息,不必编写复杂的代码。
图7-10中的其它功能,稍后再介绍。
3)DataCombo和DataList绑定控件
DataCombo和DataList属于ActiveX控件,如同使用其它ActiveX控件一样,需要添加“部件”,选取“MicrosoftDataListControl6.0(OLEDB)”。
这时,在工具箱里会出现DataCombo和DataList绑定控件图标。
【例7-3】用Datalist控件显示学生姓名,用DataCombo控件显示学生学号。
单击选择学生的姓名或学号,关联显示出该学生的全部课程和考试情况。
步骤如下:
● 建立工程文件ch07_03.vbp
● 设计交互界面,如图7-12所示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 数据库 链接 访问