视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
VB连接Access数据库
2025-09-23 17:57:33 责编:小OO
文档
首先有一点要注意,数据库的使用与我们以往所使用的文本文件不同.例如我们使用文本文件,来记录各种有用的数据.那么大致有以下几步:

读取文件 -- 格式化数据 -- 关闭文件 -- 使用数据

如果数据量较大,需要进行筛选,且存放数据的源文件可能不定时变更,那么我们可以用一个临时文件来存放有用的数据,这样可大大提高程序的效率.要 [格式化数据]时,我们首先要进行筛选,然后还得进行分类,这样文件中的字符串才能被转换成有用的信息来供程序使用.这样一来,不用说,处理速度将大大减慢,而且就算你设计的数据格式比较科学,当数据量非常大时,文件的容量也会变的让普通计算机无法承受. 

相对文本文件来说数据库的使用也大致分为以下几步:

打开数据库 -- 查找数据 -- 使用数据 -- 关闭数据库

从中可以看出,里面少了一步格式化数据,因为数据库本身在存储数据时,它就是按照一定的格式来进行存储的.

其次是,数据库与文本文件返回数据的方法不同.如果把文本文件比作一个Textbox 的话,那么数据库更像是一个ListBox.使用文本文件时我们需要从整个Textbox中取出有用的信息,并进行处理,而Listbox则可以根据需要返回特定的某一项.

由于VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库.这里我们采用ADODB,相比DAO和能访问数据库的API来说,它比DAO更灵活,更强大;而比起API,它更简单易用,更适合初学者.而Access数据库比起SQL,也相对简单了很多,且能够满足中小型应用程序的需要,所以我们在使用数据库时,选择了Access.

就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计Access数据库的结构时,我们需要用到其它的程序来进行详细的规划.建议采用的程序是office中的Access或VB自带的VISDATA.

当数据库设计好了以后,我们可以开始"数据库编程"了.

首先,我们需要引用ADO.具体的方法是,在"工程" -- "引用" 中,找到"Microsoft ActiveX Data Object *.* Library这里的"*.*"是指的时ADO的版本号,一般来说,应用程序或ActiveX控件都具有向下兼容性,所以我们尽可能选择比较新的版本.以确保程序在能识别旧版本Access的同时,也能识别较新版本的Access.

然后我们需要在程序中创建一个对象.就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库.常用的对象有两个,Connection和Recordset.

创建这两个对象的具体方法是:

1.在引用后,使用New关键字,如 

Private Conn As New ADODB.Connection 

Private Reco As New ADODB.Recordset

2.在没引用时,用CreateObject创建对象: 

Dim Conn,Reco 

Set Conn = CreateObject("ADODB.Connection") 

Set Reco = CreateObject("ADODB.Recordset")

创建了对象之后,下一步我们要做的就是打开数据库了.

先看下面的代码,可以成功的打开数据库. 

Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Main.mdb" 

这句代码打开了D盘中的Main.mdb这个数据库. 

Connection.Open方法的第一个参数是连接代码,它将传递给系统的数据库引擎.前半部分"Provider= Microsoft.Jet.OLEDB.4.0它表示了数据库的类型.不同的数据库可能会不同.后半句"Source=d:\\main.mdb"它表示了数据库所在的绝对路径.

打开数据库之后,还要打开表.假如数据库中有一个表,表名为"Users字段有两个,一个为用户名,一个为密码.那么看以下代码.

1.想返回"Users"中,[用户名]为"去年烟花"的[密码] 

Recordset.open "Select 密码 From Users Where 用户名='去年烟花'",Connection,1,1

之后我们就可以把用户输入的密码进行比较,看是否允许登录. 

If Recordset.eof and Recordset.bof then 

Msgbox "用户不存在!",16 

Else 

If PassWord =Recordset("密码").value then 

msgbox "登录成功!", 

Else 

msgbox "密码错误!",32 

End If 

End If 

Recordset.Close

2.假设Admin已经成功登录系统,我们想把所有的用户名和密码都显示出来 

Recordset.open "Select * From Users",Connection,1,1 

这时,表已经被打开,我们就用以下代码把它显示出来. 

Do whlie Not Recordset.eof 

Print "用户名: " & Recordset("用户名").value & "密码: " & Recordset("密码").value 

Recordset.MoveNext 

Loop 

Recordset.Close

由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有.第一个参数是SQL语句.

Select [字段名] From 表名 [Where 条件]

这里的条件可以省略.且字段名也可以用"*"来代替所有字段.

需要注意的是,如果你用(1)中的方法打开,那么(2)后面显示的代码就不能再用在(1)中.因为(1)里并没有打开[用户名]字段,所以这一句Recordset("密码")就没有值存在,还有可能出错.

后面的条件,可以用"="、">"、"<"等运算符.比如 "Where ID > 32".(这里假设[ID]为数字型.)

这是打开的部分.第二个很重要的部分就是查询记录.

数据库它并不是把所有记录全部放到一个变量中备用的.而是以"当前记录"的形式来返回一个值.所以我们想从中找到有用的信息,就必须要对信息进行定位/筛选.

定位: 

移动到下一条 Recordset.MoveNext 

移动到上一条 Recordset.MovePrevious 

移动到最后一条 Recordset.MoveLast 

移动到第一条 Recordset.MoveFrist 

移动到某一条 Recordset.Move Number

筛选: 

Recordset.Find "条件"

如:[用方法(2)打开表之后] 

Private Sub Command1_Click() 

Recordset.Find "用户名=" & "text1.text" 

If Recordset.Eof <> True Then

Msgbox "该用户的密码是:" & Recordset("密码").value, 

Else 

Msgbox "未找到该用户的资料!",16 

End If 

End Sub

MoveNext 只有当Eof不为True时,才可用,否则发生错误.而MovePrevious刚是Bof不为True时.... 

而只要Eof 和 Bof中有一个不为真时,也就是说只要有一条记录时,它就可以使用.

Find 方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的.当在已打开的记录集中,找不到该记录时,Eof为True.找到则当前的值就是符合条件的记录.

第三个部分就是添加/修改记录. 

修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了. 

比如:[(修改密码)按方法(1)打开表之后] 

Recordset("密码").value = "123456" 

Recordset.Updata 

需要注意的就是,在修改完成后,要调用Updata方法,这样修改才能生效.

而添加记录则可以用以下代码来实现: 

Recordset.addnew 

Recordset("用户名").value = "Admin" 

Recordset("密码").value = "Admin" 

Recordset.Updata

这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用Updata方法.

到这里就差不多了,最后说一下上面提到的几个方法.

Recordset.Open SQL语句,数据源,游标类型,打开方法

SQL语句不用说了,就是Select那啥的,目的就是按要求从表中返回数据 

数据源就是一个打开之后的Connection对象. 

去游标类型,填1就可以了 [偷笑ing] 

打开方法对应了几个常数,具体哪几个可以从对象浏览器里看. 

对应数值的意义: 

1 只读 2 独占 3 可写 4 自已可写,别人可读

Connection.open 连接代码,服务器用户名,密码 

这里的连接代码就不在多说了,服务器用户名,密码只有在连接远程数据库时才用到.

本文出自 51CTO.COM技术博客

VB如何连接access数据库

2009年07月25日 星期六 下午 07:07

VB如何连接access数据库?最近在学习VB,正在研究当中!

今天告诉大家VB连接数据库的方法,我知道的有两种:

一种是在 adodc1的属性里设置数据库文件的路径,这种方法的优点是简单易操作,缺点是,当源文件换了地方后,要重新设置数据库的路径,否则连接不上数据库了。

一种是用代码设置数据库的路径,这种方法的优点就是只要源文件和数据库在同一文件夹下,无论移动到哪里都能连接上。

如果没有建立好数据库的话,先建立一个数据库,然后建立一个表比如我们建的表名为message,然后把里面的字段名称和数据类型都按自己的需要设置好.然后保存就可以了.

打开Microsoft Visual Basic6.0 我用的是VB6.0,在需要调用数据库的窗体上加入一个adodc控件,默认名称为:Adodc1.默认的情况下工具栏里是没有这个控件的,可以打开工程---部件(快捷键CTRL+T),去掉只显示选定项的勾,然后勾上Microsoft ADO Data Control(OLEDB),然后确定,工具栏就会多了一个adodc的控件。

第一种方法,设置adodc1的属以连接数据库.在adodc1控件上右键--Adodc属性--使用连接字符串--生成--Microsoft Jet 4.0 OLE DB Provider--下一步--选择或输入数据库名称---找到要连接的数据库后,确定.然后记录源设置属性. 如果要把内容提交到数据库一般使用adCmdTable. 表选择要连接的表。

设置完毕后就可以了.

如果我们想把内容提交到数据库.举个例子..

在窗体建立一个文本框,设置属性中的DataSource为adodc1   DataField为要连接的数据库的字段名。如果数据库中有字段,会让你选择。

设置好后在窗体加一个添加记录和一个提交的按钮,设置代码:

Private Sub Command1_Click()

Adodc1.Recordset.Update   '保存

Adodc1.Refresh '刷新

End Sub

添加按钮代码:

Private Sub Command2_Click()

Adodc1.Recordset.AddNew '添加新纪录

Adodc1.Recordset("姓名").Value = Text1.Text

End Sub

第二种方法:

在窗体添加Adodc控件一个text控件 一个添加记录按钮一个提交按钮

在窗体设置代码:

Private Sub Form_Load()

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\\db1.mdb;Persist Security Info=False" '设置数据库路径

Adodc1.CommandType = adCmdText '设置记录源

Adodc1.RecordSource = "select * from message" '连接数据库的message表文件

Set Text1.DataSource = Adodc1 

text1.DataField = "姓名"

End Sub

添加记录按钮代码:

Private Sub Command1_Click()

Adodc1.Recordset.AddNew '添加新纪录

End Sub

提交代码:

Private Sub Command2_Click()

Adodc1.Recordset.Update   '保存

Adodc1.Refresh '刷新

End Sub

好了连接方法讲完了,我都在机子上测试过了,因该没有什么问题的。如果有问题请多看几遍,或看些别人写的程序代码,会有很大进步的,我的VB也不好,因为不是计算机专业的,老师也没有教很多,高手莫笑。好了我再给大家几个查询数据库常用的代码:

首记录按钮的代码:

Private Sub sjl_Click()

Adodc1.Recordset.MoveFirst

End Sub

上一条记录按钮代码:

Private Sub up_Click()

Adodc1.Recordset.MovePrevious

If Adodc1.Recordset.BOF Then

Adodc1.Recordset.MoveFirst

End If

End Sub

下一条记录代码:

Private Sub down_Click()

Adodc1.Recordset.MoveNext

If Adodc1.Recordset.EOF Then

Adodc1.Recordset.MoveLast

End If

End Sub

末记录代码:

Private Sub mjl_Click()

Adodc1.Recordset.MoveLast

End Sub

删除记录代码:

Private Sub Command3_Click()

Adodc1.Recordset.Delete

Adodc1.Recordset.MoveNext

If (Adodc1.Recordset.BOF Or Adodc1.Recordset.EOF) Then

MsgBox "已经无纪录", , "提示"

End If

End Sub

下载本文
显示全文
专题