不管简单还是复杂都需要两步:一是连接数据库(即打开数据库),第二查询数据。
连接数据库需要指定数据库类型、 数据库文件位置、登录数据库的用户信息等等。
确定连接信息后相对简单(注意相对而言,有时候反而更复杂)的查询方式是绑定,添加一个ADODC控件,并把文本框(或者标签)的DataSource设置为ADODC控件,DataField设置为数据库的某个字段,不需要写代码就可以查询数据。
关键词 控件 数据库 接口Visual Basic专业版是一种广泛使用的数据库编程语言,提供了对数据库应用的强大支持。VB访问数据库的方法大致有三类:使用数据绑定控件,使用数据库存取对象变量(Data Access Object Vari?鄄able),直接调用ODBC 2.0 API接口函数。1 VB的数据库结构VB数据库的核心结构是MicroSoft Jet数据库引擎,JET引擎的作用是支持多种ISAM(Indexed Sequential Access Method,即索引顺序存取方 法) 数据驱动程序。VB环境下Access是缺省的数据格式,对于其他的关系型数据库如Fox?鄄Pro、Dbase(或 Xbase)、Paradox、Btrieve等,VB的专业版可兼容其驱动程序,这就使得VB能支持这些数据库格式。由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。2 VB访问数据库的原则和方法2.1 VB访问数据库的原则2.1.1 代码的重用和运行的效率VB程序设计中,应尽可能减少代码的重复编写,提高运行效率。例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO。2.1.2 实现的简便性,易维护性如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要 访问ISAM 或Jet 类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易。2.1.3 安全原则这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网,因而可直接利用数据控件DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。2.2 数据访问接口功能及含义ADC(Advanced Data Connector):高级数据连接器, 提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。ADO(Active Data Objects):Active 数据对象,ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使 用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Ex?鄄cel表格、 文本文件、 图形文件和无格式的数据文件。ADO是基于OLE-DB 之 上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。DAO(Data Access Objects):数据访问对象,是一种面向对象的界面接口。通过DAO/Jet 功能可以访问ISAM 数据库,使用DAO/ ODBC Direct功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL( 数据描述语言)的功能很类似。 DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所的全部 *** 作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。JET(Joint Engine Technology):数据连接性引擎技术,是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。ODBC(Open Database Connectivity):开放式的数据库连接,是一种公认的关系数据源的接口界面。提供统一接口的界面,ODBC对任何数据源都未作优化。ODBC Direct:是一种基于DAO对象的新的DAO模式, 其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。OLE DB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)