VB连接ACCESS数据库练习.docx
- 文档编号:4276670
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:44
- 大小:2.08MB
VB连接ACCESS数据库练习.docx
《VB连接ACCESS数据库练习.docx》由会员分享,可在线阅读,更多相关《VB连接ACCESS数据库练习.docx(44页珍藏版)》请在冰豆网上搜索。
VB连接ACCESS数据库练习
首先,数据库的使用也大致分为以下几步:
打开数据库--查找数据--使用数据--关闭数据库
其次是,访问查询数据库返回的类似表,就像Access中查询的结果一样.
由于VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库.这里我们采用ADODB,这是一种新的数据库访问技术(其后还有.net中支持的ADO.NET),相比DAO和能访问数据库的API来说,它比DAO更灵活(不仅可以链接关系数据库,还可以链接电子邮件,商业对象等多种数据源),更强大;而比起API,它更简单易用,更适合初学者.而Access数据库比起SQL,也相对简单了很多,且能够满足中小型应用程序的需要,所以我们在使用数据库时,选择了Access.
我们需要先设计好数据结构,在数据库中存储一些数据.
当数据库设计好了以后,我们可以开始"数据库编程"了.
首先,我们需要引用ADO.具体的方法是,在"工程"--"引用"中,找到"MicrosoftActiveXDataObject*.*Library",这里的"*.*"是指的时ADO的版本号,一般来说,应用程序或ActiveX控件都具有向下兼容性,所以我们尽可能选择比较新的版本.以确保程序在能识别旧版本Access的同时,也能识别较新版本的Access.
然后我们需要在程序中创建一个对象.就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库.常用的对象有两个,Connection和Recordset.
创建这两个对象的具体方法是:
1.在引用后,使用New关键字,如
PrivateConnAsNewADODB.Connection定义一个变量,用于建立和数据库的连接
PrivateRecoAsNewADODB.Recordset定义一个变量,取的数据后放入该变量
2.在没引用时,用CreateObject创建对象:
DimConn,Reco
SetConn=CreateObject("ADODB.Connection")
SetReco=CreateObject("ADODB.Recordset")
创建了对象之后,下一步我们要做的就是打开数据库了.
先看下面的代码,可以成功的打开数据库.
Conn.open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:
\Main.mdb"
这句代码打开了D盘中的Main.mdb这个数据库.如果程序和数据库在统一目录下,还可以省略盘符,直接写数据库名。
Connection.Open方法的第一个参数是连接代码,它将传递给系统的数据库引擎.前半部分"Provider=Microsoft.Jet.OLEDB.4.0",它表示了数据库的类型.不同的数据库可能会不同.后半句"Source=d:
\main.mdb"它表示了数据库所在的绝对路径.
打开数据库之后,还要打开表.假如数据库中有一个表,表名为"Users",字段有两个,一个为用户名,一个为密码.那么看以下代码.
1.想返回"Users"中,[用户名]为"去年烟花"的[密码]
Reco.open"Select密码FromUsersWhere用户名='去年烟花'",Connection,1,1
之后我们就可以把用户输入的密码进行比较,看是否允许登录.
IfReco.eofandReco.bofthen
Msgbox"用户不存在!
",16
Else
IfPassWord=Reco("密码").valuethen
msgbox"登录成功!
",64
Else
msgbox"密码错误!
",32
EndIf
EndIf
Reco.Close
2.假设Admin已经成功登录系统,我们想把所有的用户名和密码都显示出来
Reco.open"Select*FromUsers",Connection,1,1//为何这个格式,见本文末尾。
这时,表已经被打开,我们就用以下代码把它显示出来.
DowhlieNotRecot.eof
Print"用户名:
"&Reco("用户名").value&"密码:
"&Reco("密码").value
Reco.MoveNext
Loop
Reco.Close
由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有.第一个参数是SQL语句.
Select[字段名]From表名[Where条件]
这里的条件可以省略.且字段名也可以用"*"来代替所有字段.
需要注意的是,如果你用
(1)中的方法打开,那么
(2)后面显示的代码就不能再用在
(1)中.因为
(1)里并没有打开[用户名]字段,所以这一句Reco("密码")就没有值存在,还有可能出错.
后面的条件,可以用"="、">"、"<"等运算符.比如"WhereID>32".(这里假设[ID]为数字型.)
这是打开的部分.第二个很重要的部分就是查询记录.
数据库它并不是把所有记录全部放到一个变量中备用的.而是以"当前记录"的形式来返回一个值.所以我们想从中找到有用的信息,就必须要对信息进行定位/筛选.
定位:
移动到下一条Reco.MoveNext
移动到上一条Reco.MovePrevious
移动到最后一条Reco.MoveLast
移动到第一条Reco.MoveFrist
移动到某一条Reco.MoveNumber
筛选:
Reco.Find"条件"
如:
[用方法
(2)打开表之后]
PrivateSubCommand1_Click()
Reco.Find"用户名="&"text1.text"
IfReco.Eof<>TrueThen
Msgbox"该用户的密码是:
"&Reco("密码").value,64
Else
Msgbox"未找到该用户的资料!
",16
EndIf
EndSub
MoveNext只有当Eof不为True时,才可用,否则发生错误.而MovePrevious刚是Bof不为True时....
而只要Eof和Bof中有一个不为真时,也就是说只要有一条记录时,它就可以使用.
Find方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的.当在已打开的记录集中,找不到该记录时,Eof为True.找到则当前的值就是符合条件的记录.
第三个部分就是添加/修改记录.
修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了.
比如:
[(修改密码)按方法
(1)打开表之后]
Reco("密码").value="123456"
Reco.Updata
需要注意的就是,在修改完成后,要调用Updata方法,这样修改才能生效.
而添加记录则可以用以下代码来实现:
Reco.addnew
Reco("用户名").value="Admin"
Reco("密码").value="Admin"
Reco.Updata
这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用Updata方法.
到这里就差不多了,最后说一下上面提到的几个方法.
Recordset.OpenSQL语句,数据源,游标类型,打开方法
SQL语句不用说了,就是Select那啥的,目的就是按要求从表中返回数据
数据源就是一个打开之后的Connection对象.
游标类型填1就可以了,想了解更多自己去看。
打开方法对应了几个常数,具体哪几个可以从对象浏览器里看.
对应数值的意义:
1只读2独占3可写4自已可写,别人可读
Connection.open连接代码,服务器用户名,密码
这里的连接代码就不在多说了,服务器用户名,密码只有在连接远程数据库时才用到.
例题12.1,上面介绍的是引用ADO对象连接数据库的方式,还有另一种是使用ADOData控件的方式,如果是在窗体上连接数据库,可以使用ADOData控件的情况下,使用控件要比引用对象方式简单些,请按如下操作:
下面通过一个简单的例子,介绍用ADOData控件建立数据浏览窗体的基本步骤。
(1)新建一个标准的VB工程,将ADOData控件添加到工具箱中
执行菜单[工程]\[部件],打开“部件”对话框,
在“控件”列表框中选中“MicrosoftADODataControl6.0(OLEDB)”项,将ADOData控件添加到工具箱中。
(2)将ADOData控件添加到窗体上
在窗体上,ADOData控件的外观如图8-10所示,默认控件名称为Adodc1,可以单击其上的箭头按钮在记录之间移动。
(3)设置ADOData控件的数据源连接属性
操作步骤如下:
在Adodc1控件的属性窗口中,选择(自定义)属性右边的[…]按钮,打开[属性页]对话框,或鼠标右击Adodc1控件,在弹出的快捷菜单中选择[属性]命令,打开[属性页]对话框如图8-11所示。
在[通用]选项卡中选择“使用ODBC数据资源名称”,并在下拉列表中选择前边建立的ODBC数据源名“cjgl”。
单击[身份验证]选项卡(如图8-12),输入用户名(例如sa)和密码(例如sa)。
单击[记录源]选项卡(如图8-13),在该选项卡中,可以设置ADOData控件的返回记录的记录源。
记录源是从命令对象获取的,可以在[命令类型]下拉列表中选择用于记录源的命令类型。
各种命令类型的含义如表所示。
命令类型
含义
8-adCmdUnknow
未知类型,用户需在[命令文本(SQL)]框中输入SQL语句建立命令对象
1-adCmdText
文本类型,用户需在[命令文本(SQL)]框中输入SQL语句建立命令对象
2-adCmdTable
表类型,用户需在[表或存储过程名称]下拉列表中选择一个数据表来建立命令对象(相当于输入:
Select*FromTable)
4-adCmdStoredProc
存储过程,用户需在[表或存储过程名称]下拉列表中选择一个查询的名称来建立命令对象
例如要访问学生信息表,选择命令类型为:
2-adCmdTable
然后在[表或存储过程名称]下拉列表框中选择“学生信息表”(如图8-13所示)。
设置完成后,单击[确定]按钮。
也可以选择命令类型为1-adCmdText,然后在[命令文本(SQL)]框中输入如
下SQL语句:
Select*From学生信息表
设置完成后,单击[确定]按钮。
(4)向窗体中添加其他数据绑定控件,并绑定到Adodc1上
在窗体Form1上,添加5个文本框用于显示字段中的数据,5个标签用于说明对应的字段名(见图8-14)。
将控件(如Text)绑定到Adodc1上的方法如下:
设置绑定控件的DataSource属性为数据控件名:
Adodc1
设置绑定控件的DataField属性为要显示的字段名
各个文本框的属性设置如表8-2所示.
考虑到浏览数据的窗体,不应允许修改数据,所以将文本框的Locked属性设为True,使之只能显示数据而不能修改或输入数据。
控件名
属性名
属性值
控件名
属性名
属性值
Text1
DataSource
Adodc1
Text3
DataSource
Adodc1
DataField
学号
DataField
性别
Locked
True
Locked
True
Text2
DataSource
Adodc1
Text4
DataSource
Adodc1
DataField
姓名
DataField
生日
Locked
True
Locked
True
Text2
DataSource
Adodc1
Text2
Locked
True
DataField
专业
当所有文本框都通过表8-2所示的属性设置后,即完成了绑定到Adodc1所连接的数据源。
这时可运行程序,结果如图9-15所示,可见文本框中显示了学生信息表的第一条记录信息,若单击Adodc1上的按钮,可显示其他记录。
8.2.3ADOData控件的常用属性及方法
1.ADOData控件的常用属性介绍如下:
Name:
名称。
默认名称:
Adodc1,Adodc2等。
Caption:
设置显示在控件上的标题。
ConnectionString:
设置到数据源的连接信息。
CommandType:
设置返回记录集的类型。
CommandType的值用于指明RecordSource的类型。
CommandType的取值及含义如下:
1-adCmdText:
文本类型,可在"命令文本框"中输入SQL语句。
表示返回的记录集是执行SQL语句的结果。
2-adCmdTable:
表类型。
可在"表或存储过程名"框中选择一个表名称(相当于选择表的所有字段)。
表示返回的记录集类型是一个数据表。
4-adCmdStoredProc:
存储过程类型。
ReocordSurce:
记录源。
返回或设置Recordset的生成方式。
可以是SQL语句,表名,查询名等。
Recordset:
记录集对象。
2.ADOData控件的Refresh方法
功能:
重新读数据库,刷新记录集。
使用格式:
Adodc1.Refresh
Refresh方法可用于ADOData控件的数据源连接发生变化时,使ADOData控件重新连接数据库。
也可在执行AddNew方法后,新数据尚未写入数据库时,调用Refresh方法,清除用户所做的添加和修改。
8.2.4RecordSet对象的常用属性及方法
1.RecordSet对象的常用属性
ADOData控件将数据库中的指定数据提取出来,并放在一个记录集中,RecordSet即记录集对象,指当前数据库中的一系列记录。
其主要属性如下:
(1)EOF和BOF属性
这两个属性是反映记录指针是否到记录头和记录尾的标志。
如果记录指针位于第一条记录之前,则BOF=True否则BOF=False。
如果记录指针位于最后一条记录之后,则EOF=True否则EOF=False。
EOF和BOF属性具有以下特点:
如果记录集是空的,则EOF和BOF的值都是True
如果EOF和BOF的值成为True之后,只有当记录指针移到实际存在的记录上,二者的值才会变为False。
(2)RecordCount属性
反映记录集中的记录总数。
例如要在Adodc1控件上显示记录总数,可用如下语句:
Adodc1.Caption=Adodc1.Recordset.RecordCount
(3)AbsolutePosition属性
反映当前记录的位置。
若当前显示的是第一条记录,则AbsolutePosition=1
例如要在Adodc1控件上显示当前记录的位置,可用如下语句:
Adodc1.Caption=Adodc1.Recordset.AbsolutePosition
例如要在Adodc1控件上显示当前记录的位置及记录总数,可用如下语句:
Adodc1.Caption=Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
2.RecordSet对象的常用方法
(1)Move方法
利用ADOData控件,通过编程的方法进行数据库浏览时,需要用到ADOData控件的RecordSet对象的Move方法在记录集之间移动记录指针。
主要有以下几种方法:
MoveNext方法:
记录指针移到下一条记录
MovePrevious方法:
记录指针移到上一条记录
MoveFirst方法:
记录指针移到第一条记录
MoveLast方法:
记录指针移到最后一条记录
Move[n]方法:
使记录指针前移或后移n条记录。
n为正数,表示向后移动;n为负数,表示向前移动.
例8-2设计数据浏览窗体,利用Move方法实现数据库的浏览。
在例8-1的基础上,添加按钮如图8-16,运行时不显示Adodc1(设其Visible属性为False),通过按钮实现记录指针的移动。
设置新增控件的属性如表。
控件名
属性名
属性值
作用
CmdFirst
Caption
首记录
将记录指针移到第1条记录
CmdPre
Caption
前移
记录指针向前移动一条记录
CmdNext
Caption
后移
记录指针向后移动一条记录
CmdLast
Caption
末记录
将记录指针移到末条记录
CmdN
Caption
移动记录数
一次移动n条记录
Text6
Text
空
输入要移动的记录数量
Label6
caption
空
显示当前记录数及记录总数
编程如下:
PrivateSubForm_Load()‘设置按钮的初始状态
CmdFirst.Enabled=False‘[首记录]按钮无效
CmdPre.Enabled=False‘[前移]按钮无效
CmdNext.Enabled=True‘后移]按钮有效
CmdLast.Enabled=True‘[末记录]按钮有效
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdFirst_Click()
Adodc1.Recordset.MoveFirst'记录指针移到首记录(显示首记录)
CmdFirst.Enabled=False'让[首记录]按钮无效
CmdPre.Enabled=False'让[前移]按钮无效
CmdNext.Enabled=True'让[后移]按钮有效
CmdLast.Enabled=True'让[末记录]按钮有效
‘在Label6上显示当前记录号/记录总数:
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdPre_Click()
Adodc1.Recordset.MovePrevious'记录指针移到前一条记录
CmdNext.Enabled=True
CmdLast.Enabled=True
IfAdodc1.Recordset.BOFThen'如果记录指针移到首记录之前,
Adodc1.Recordset.MoveFirst'则记录指针移到首记录上
CmdFirst.Enabled=False
CmdPre.Enabled=False
EndIf
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdNext_Click()
Adodc1.Recordset.MoveNext'记录指针移到下一条记录
CmdFirst.Enabled=True
CmdPre.Enabled=True
IfAdodc1.Recordset.EOFThen'如果记录指针移到了末记录之后
Adodc1.Recordset.MoveLast'则记录指针移到末记录上
CmdNext.Enabled=False
CmdLast.Enabled=False
EndIf
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdLast_Click()
Adodc1.Recordset.MoveLast'移到末记录
CmdFirst.Enabled=True
CmdPre.Enabled=True
CmdNext.Enabled=False
CmdLast.Enabled=False
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdN_Click()
DimnAsInteger
n=Text6.Text
Adodc1.Recordset.Moven
Label6.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
(2)AddNew方法
功能:
用于向数据表中增加空记录。
(3)Uptate方法
功能:
用来把添加的新记录或修改的记录保存到数据表中,该方法只能在AddNew方法被执行之后才能执行。
增加记录的操作可分为以下3步:
调用RecordSet对象的AddNew方法,增加一个空记录,语句格式如下:
Adodc1.RecordSet.AddNew
在数据绑定控件中输入记录值,或用代码给字段赋值,格式如下:
Adodc1.RecordSet.Fields(“字段名”)=值
调用Update方法,将输入的新记录值保存到数据表中,语句格式如下:
Adodc1.RecordSet.Update
(4)Delete方法
功能:
删除当前记录。
使用格式:
Adodc1.RecordSet.Delete
例8-3设计数据编辑窗体。
该窗体具有新增记录、删除记录、修改记录、取消修改等功能。
当新增记录或修改记录时,只要没有单击[确定]按钮,单击[取消]按钮,可以取消上述操作。
在例8-2的基础上,增加以下功能按钮:
添加(CmdAdd):
执行记录集的AddNew方法
删除(CmdDel):
执行记录集的Delete方法
确定(CmdOk):
执行记录集的Update方法
取消(CmdEsc):
执行数据控件的Refresh方法
编写代码
PrivateSubForm_Load()
CmdFirst.Enabled=False'[首记录]按钮无效
CmdPre.Enabled=False'[前移]按钮无效
CmdNext.Enabled=True'[后移]按钮有效
CmdLast.Enabled=True'[末
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 连接 ACCESS 数据库 练习
![提示](https://static.bdocx.com/images/bang_tan.gif)