在Visual Basic中用DAO实现数据库编程


  DAO(DataAccessObject)全称为数据 拜访对象,它是数据库编程的主要 步骤之一 。DAO的一种面向对象的界面接口,特点为它不是可视化的对象, 使用它所有都要靠编码来 实现,DAO是设计关系型数据库系统 构造的对象类的 集中 。它提供了 实现治理这样一个系统所需的所有操作的属性和 步骤,包含 缔造数据库,定义表、字段和索引, 构建表间的关系,定位和 查问数据库等工具 。因为ADO(ActiveXDataObjectActiveX数据对象)的浮现,DAO的 使用已大大削减,但它 毋庸 使用ODBC(开放数据库衔接)便可衔接各个数据源, 因此我们仍 时常用经典的DAO 。下面我向大家 详尽介绍如何 使用DAO编程 。

  DAO 使用之前必须先 引用 。 步骤为 打开VB6.0,从VB的"工程"菜单中, 取舍" 引用"项,当" 引用"对话框浮现后,从库的列表中, 取舍"MicrosoftDAO3.51ObjectLibrary",单击"确定" 。现在便 可以 使用DAO对象库提供的所有对象进行编程了 。

  一、 缔造数据库:

  在DAO中用CreatDataBase 步骤 可以依据消费者需要动态的 缔造数据库 。这丝毫在程序中是十分有用的 。消费者 可以依据要求实时 构建数据库 。 构建过程如下:  

  PrivateSubCom_creat_Click()

  OnErrorGoToErr100

  CreatDataBase"数据库名称.mdb",dbLangGeneral

  Msgbox"数据库 构建 结束"

  ExitSub

  Err100:

  MsgBox"不能 构建数据库!"&vbCrLf&vbCrLf&Err.Description,vbInformation

  EndSub

  这样,数据库便在目前默许的路径下 构建了 。

  二、 缔造表与字段:

   构建数据库后,则需要在该数据库中 构建表,这要用到TableDef对象 。先定义一个TableDef类型的对象, 而后用TableDef 集中中Append 步骤将之追加到数据库当中去 。而且同时定义一个Field对象,用CreatFiele的 步骤 缔造一个Field对象,向表中增加字段 。例如:

  

  PrivateSubCom_table_Click()

  OnErrorGoToErr100

  DimDefdbAsDataBase

  DimNewTableAsTableDef

  DimNewFieldAsField

  SetDefdb=Workspaces(0).OpenDatabase(App.path&"数据库名称.mdb",0,False)

  SetNewTable=DefDataBase.CreateTableDef("表名")

  SetNewField=DefTable.CreateField("字段名",dBText,6)′ 缔造一个字符型的字段,长度为6个字符

  DefTableFields.AppendNewField′字段追加

  DefDatabase.TableDefs.AppendNewTable′表追加

  Msgbox"表 构建 结束"

  ExitSub

  Err100:

  MsgBox"对不起,不能 构建表 。请先再建表前 构建数据库?",vbCritical

  EndSub

  一个数据库可能有十几个甚至几十个字段,一个表中有多少个字段,则要 缔造多少次并要追加到表中 。每 构建一个字段后都要用到字段追加命令,然而表追加 惟独在所有字段 构建 实现后用一条命令即可 实现 。   

  三、 打开数据库:

  在VB中,对一个对象变量 引用之前必须加以 注明 。DAO也是如此,必须先申明数据库变量,例如:DimdbaseAsDatabase 。 构建了数据库对象变量后,我们便可 打开数据库了,在普通状况下都只不过 拜访一个数据库,当 打开数据库后再对数据库中的各个记录进行操作,这就要用到Recordset对象 构建记录集 。例如:  

  PrivateSubCommand_OpenDatabase_Click()

  DimdbaseasDatabase

  DimrsAsRecordset

  Setdbase=OpenDatabase(App.path&"数据库名称.mdb")

  Setrs=dbase.OpenRecordset("select*from表名")

  EndSub

  这样,数据库中的记录便放到Recordset中, 可以进行后续操作了 。

  四、 使用数据库:

  当 打开数据库, 构建Recordset记录集后,便可阅读、删除、增加、搜索数据库中的内容 。

  1)向前阅读

    PrivateSubcmd_previous_Click()

  rs.MovePrevious

  ifrs.BOF=Truethen

  rs.Movelast

  Endif

  fori=0to11

  label(i).caption=rs.F

  2)向后阅读 

  PrivateSubcmd_next_Click()

  rs.MoveNext

  Ifrs.EOF=Truethen

  rs.MoveFirst

  Endif

  fori=0to11

  label(i).caption=rs.Fields(i)&""

  next

  EndSub

  3)删除记录

  PrivateSubcmd_del_Click()

  OnErrorGoTohandle

  Dimmsgasstring

  msg="是不是要删除记录"&Chr$(10)

  msg=msg&label(0)′把删除记录的代号加入msg中

  IfMsgbox(msg,17,"删除记录")<>1ThenExitsub

  rs.delete

  rs.Movenext

  Ifrs.EOF=TrueThen

  rs.MovePrevious

  Endif

  fori=0to11

  label(i).caption=rs.Fields(i)&""

  next

  handle:

  MsgBox"该记录 无奈删除!!!"

  ExitSub

  EndSub

  4)增加记录

  向数据库中增加记录 比较麻烦丝毫, 大体分为三步:首先,用AddNew 步骤向数据库增加一个新的空白记录;其次,将要输入的数据分别赋到数据库的各个字段中;最终,用Updata的 步骤,把记录写到数据库中去 。例如: 

  PrivateSubcmd_new_Click()

  rs.AddNew

  Fori=0to11

  rs.Fields(i)=TextBox(i).Text

  Next

  rs.Updata

  EndSub

  5)搜索记录

  搜索记录 可以用Find 步骤,例如:  

  PrivateSubCmd_search_Click()

  Setrs=dbase.openRecordset("表名",dbopenDynaset)

  rs.findfirst"字段名='"&Text.Text&"'"′Text.Text是输入的 要害字

  ifrs.Nomatch=Truethen

  Msgbox"对不起,没有该记录"

  else

  Fori=0to11

  label(i).caption=rs.Fields(i)&""

  Next

  Endif

  rs.close

  EndSub

  以上只不过 大体介绍了DAO的一些最常用、最典型的用法,真正要娴熟 主宰它需要不懈的 奋力 。当你很好的 了解了DAO后,对学习新的RDO和ADO也有很大的协助 。而且DAO和ADO 可以同时 使用,DAO的缺点在于搜索 性能不强,没有ADO容易,但动态 缔造数据库却远超ADO, 因此有时二者 联合更 壮大 。我们相信DAO 定然会帮你节约珍贵 工夫,为工作提供容易 。