VB如何调用Access数据库?

VB如何调用Access数据库?,第1张

首先,我们需要引用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.0Data 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 "登录成功!",64

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,64

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 连接代码,服务器用户名,密码

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

我想这个要用到Common Dialog控件 ,打开工程(project)>>>部件(components) , 勾选Microsoft Common Dialog Control 6.0 点击确定。 在窗体上画一个CommonDialog控件(默认名为CommonDialog,并且在他的Filter属性窗口里面写入“数据库文件(*.mdb)|*.mdb ” 或者 在代码里面写入:CommonDialog1.Filter = "数据库文件(*.mdb)|*.mdb 。假设窗体上有一个Command1按钮 , 在他的click事件里面加入代码: CommonDialog1.ShowOpen 这样的话就可以在点击Command1的时候打开一个打开文件的对话框(就是你说的用户选择界面),然后你就可以找需要的文件了。 但实际上CommonDialog控件并不是真正的打开文件,他只是把你在“用户选择界面”所选择的想要打开的文件的路径存了起来,存在哪呢,就存在CommonDialog1.FileName里面 如果你想真正的把你选的文件打开,就要另外写代码了。 首先 我们要定义一个打开文件的Function(Function和Sub在vb里都叫做过程,不同的是Function过程有返回值,而Sub过程没有返回值)代码如下: Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 括号里都是这个Function的参数和相应的数据类型,不想深究的话可以不管他 然后 我们就要在合适的时候调用这个过程 综上所述 完整的代码 如下: Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Command1_Click() CommonDialog1.ShowOpen ShellExecute Me.hWnd, "open", CommonDialog1.FileName, "", "", 1 End Sub

使用Visual Basic作为前端开发语言,与SQL Server接口有几种常用的方法,即:

①数据访问对象/Jet

②为ODBC API编程

③使用SQL Server的Visual Basic库(VBSQL)为DB库的API编程

④RDO 远程数据对象(RemoteData Objects)

⑤ADO 数据对象(Active Data Objects)

1、数据访问对象/Jet

VB支持Data Access Objects(DAOs)的子集。DAO的方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它的确有许多优点。DAO/Jet是为了实现从VB访问Access数据库而开发的程序接口对象。使用DAOs访问SQL Server的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQL Server提交SQL语句且返回结果。下面是一个用DAOs访问SQL Server的VB实例。

注释:Form Declarations

Dim mydb As Database

Dim mydynaset As Dynaset オ

Private Sub Form_Load()

Set mydb = OpenDatabase("", False, False, "ODBCDSN=MyserverWSID=LCLDATABASE = sales")

Set mydynaset = mydb CreateDynaset("Select*from Customers") オ

End Sub ァ

上述例子是以非独占、非只读方式打开sales数据库,并检索Customers表中的所有字段。OpenDatabase函数的最后一个参数是ODBC连接字符串参数,它指明了Microsoft Access连接到SQL Server所需要知道的一些内容。其中“DSN”为数据源名,“WSID”为工作站名,“DATABASE”为所要访问的数据库名。

2、利用ODBC API编程

ODBC(Open Database Connectivity)的思想是访问异种数据库的一种可移植的方式。与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接中。应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器(SQLSRVR.DLL)把它们送到服务器中。

下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句句柄。

Global giHEnv As Long

Global giHDB As Long

Global giHStmt As Long

Dim myResult As integer

Dim myConnection As Srting

Dim myBuff As String*256

Dim myBufflen As Integer

If SQLAllocEnv(giHEnv)<>SQL_SUCCESS Then

MsgBox"Allocation couldn注释:t happen!"

End If

If SQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESS Then

MsgBox "SQL Server couldn注释:t connect!"

End If

myConnection="DSN=myServerUID=LCLPWD=APP=ODBCTestWSID=LCLDATABASE=sales"

myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection),myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQUIED)

myResult=SQLAllocStmt(giHDS,giHStmt)

myResult=SQLFreeStmt(giHStmt,SQL_COLSE)

rsSQL="Select * from Customers Where City = "Hunan""

myResult = SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))

3、使用VBSQL对DB库API编程

DB库是SQL Server的本地API,SQL Server的Visual Basic库(VBSQL)为Visual Basic程序员提供API。从一定意义上说,VBSQL是连接Visual Basic程序到SQL Server的性能最好最直接的方式。VBSQL包含以下三个文件:

VBSQL.VBX: 包含库函数,具有访问重要的消息和处理错误的能力


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12137044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存