VB如何连接ACCESS数据库


  由于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 登录 顺利!,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就 可以了

   打开 步骤对应了几个常数,具体哪几个 可以从对象阅读器里看 。

  对应数值的 意思:

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

  Connection.open 衔接代码,服务器消费者名,密码 。

  这里的衔接代码就不在多说了,服务器消费者名,密码惟独在衔接远程数据库时才用到 。