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

 DAO(DataAccessObject)全称为数据访问对象 它是数据库编程的重要方法之一 DAO的一种面向对象的界面接口 特色为它不是可视化的对象 使用它全部都要靠编码来完成 DAO是设计关系型数据库系统结构的对象类的集合 它提供了完成管理这样一个系统所需的全部操作的属性和方法 包括创建数据库 定义表 字段和索引 建立表间的关系 定位和查询数据库等工具 由于ADO(ActiveXDataObjectActiveX数据对象)的出现 DAO的使用已大大减少 但它无须使用ODBC(开放数据库连接)便可连接各个数据源 因而我们仍经常用经典的DAO 下面我向大家详细介绍如何使用DAO编程

 DAO使用之前必须先引用 方法为打开VB 从VB的 工程 菜单中 选择 引用 项 当 引用 对话框出现后 从库的列表中 选择 MicrosoftDAO ObjectLibrary 单击 确定 现在便可以使用DAO对象库提供的所有对象进行编程了

  一 创建数据库

 在DAO中用CreatDataBase方法可以根据用户需求动态的创建数据库 这一点在程序中是非常有用的 用户可以根据要求实时建立数据库 建立过程如下 

 PrivateSubCom_creat_Click()

 OnErrorGoToErr

 CreatDataBase 数据库名称 mdb dbLangGeneral

 Msgbox 数据库建立完毕

 ExitSub

 Err :

 MsgBox 不能建立数据库! &vbCrLf&vbCrLf&Err Description vbInformation

 EndSub

 这样 数据库便在当前默认的路径下建立了

  二 创建表与字段

 建立数据库后 则需要在该数据库中建立表 这要用到TableDef对象 先定义一个TableDef类型的对象 然后用TableDef集合中Append方法将之追加到数据库当中去 并且同时定义一个Field对象 用CreatFiele的方法创建一个Field对象 向表中添加字段 例如:

 

 PrivateSubCom_table_Click()

 OnErrorGoToErr

 DimDefdbAsDataBase

 DimNewTableAsTableDef

 DimNewFieldAsField

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

 SetNewTable=DefDataBase CreateTableDef( 表名 )

 SetNewField=DefTable CreateField( 字段名 dBText )′创建一个字符型的字段 长度为 个字符

 DefTableFields AppendNewField′字段追加

 DefDatabase TableDefs AppendNewTable′表追加

 Msgbox 表建立完毕

 ExitSub

 Err :

 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记录集后 便可浏览 删除 添加 查找数据库中的内容

  )向前浏览

 PrivateSubcmd_previous_Click()

 rs MovePrevious

 ifrs BOF=Truethen

 rs Movelast

 Endif

 fori= to

 label(i) caption=rs F

  )向后浏览 

 PrivateSubcmd_next_Click()

 rs MoveNext

 Ifrs EOF=Truethen

 rs MoveFirst

 Endif

 fori= to

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

 next

 EndSub

  )删除记录

 PrivateSubcmd_del_Click()

 OnErrorGoTohandle

 Dimmsgasstring

 msg= 是否要删除记录 &Chr$( )

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

 IfMsgbox(msg 删除记录 )<> ThenExitsub

 rs delete

 rs Movenext

 Ifrs EOF=TrueThen

 rs MovePrevious

 Endif

 fori= to

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

 next

 handle:

 MsgBox 该记录无法删除!!!

 ExitSub

 EndSub

  )添加记录

 向数据库中添加记录比较麻烦一点 大致分为三步 首先 用AddNew方法向数据库添加一个新的空白记录 其次 将要输入的数据分别赋到数据库的各个字段中 最后 用Updata的方法 把记录写到数据库中去 例如

 PrivateSubcmd_new_Click()

 rs AddNew

 Fori= to

 rs Fields(i)=TextBox(i) Text

 Next

 rs Updata

 EndSub

  )查找记录

 查找记录可以用Find方法 例如 

 PrivateSubCmd_search_Click()

 Setrs=dbase openRecordset( 表名 dbopenDynaset)

 rs findfirst 字段名= &Text Text& ′Text Text是输入的关键字

 ifrs Nomatch=Truethen

 Msgbox 对不起 没有该记录

 else

 Fori= to

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

 Next

 Endif

 rs close

 EndSub

 以上只是大致介绍了DAO的一些最常用 最典型的用法 真正要熟练掌握它需要不懈的努力 当你很好的理解了DAO后 对学习新的RDO和ADO也有很大的帮助 并且DAO和ADO可以同时使用 DAO的缺陷在于查找功能不强 没有ADO方便 但动态创建数据库却远超ADO 因此有时二者结合更强大 我们相信DAO一定会帮你节约宝贵时间 为工作提供方便

lishixinzhi/Article/program/c/201404/30446