level 7
昨天刚刚接触 数据库Access,了解到 几个访问方法,但是 无法区分。迷茫了很久。
多亏吧友解惑。 现与新手分享之。
ADO(ACTIVEX DATA OBJECTS)应用层的数据访问接口
ODBC 数据库驱动接口
OLE DB 系统级数据访问接口
DAO (DATA ACCESS OBJECTS) 对象的数据访问接口
ADO是基于全新的OLE DB技术而设计的.是一种基于应用程序层的数据访问接口.它是DAO/RDO的后继产物.
DAO是VB最先采用的面向对象的数据访问接口,通过DAO访问MICROSOFT JET数据库引擎.
ADODC是封装ADO的VB数据控件,可减少代码编写.
ADODB是数据对象,操作数据库需通过编写代码 来实现.
以上简单说明仅供参考.
还有一种说法是: DAO 因为开发出来后出现BUG太多,就不用了。
DAO是 过时的、 ADO 是新的。 建议学ADO。
2012年07月20日 22点07分
1
level 7
转。。。。。。。。。。
VB的DAO和ADO区别Data控件属于DAO,DAO主要适合本机数据库的读写,也可以通过ODBC访问网上的数据库,但效率比较低,一般不采用这种方法,更愿意采用RDO或ADO。如果要使用RDO或ADO的数据库控件都需要另外从部件对话框中添加相应的数据控件,三种方式的数据控件不同。区分你的程序是DAO、RDO,还是ADO的,可以看看打开数据库的方式。DAO使用OpenDatabase方法,RDO使用OpenConnection方法,而ADO一般通过一个ConnectionString来确定数据库的类型和位置。
那么用一个变量设置为Dim conn As New ADODB.CONNECTINO,然后用conn.open后面跟DSN或者是一串字符,在用一个Recordset的变量把它的记录拿来使用,这种方式是属于那一种呢?谢谢!!!
答:这里使用了ADODB库,明显属于ADO。
你们能告诉我什么是ODBC吗?
答:ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
不过直接使用ODBC API比较麻烦,所以微软后来又发展出来DAO、RDO、ADO这些数据库对象模型。使用这些对象模型开发程序更容易。这些模型都支持ODBC,所以即使你所访问的数据库没有提供ADO的驱动(或称提供者),只要有ODBC驱动一样可以使用ADO进行访问。
DAO 向 ADO 转化入门
1. 数据库连接
DAO:
dim db as database set db=opendatabase("c:\game.mdb", false,false,";PWD=play")
ADO 用Connection代替了Database,因为 Connection 可以连接到任何Ole DB数据源上,当然也可以包括非数据库类型的数据,例如文本型数据库.为Access创建Connection的代码如下:
dim dcGame as new adodb.connection
dcgame.cursorLocation = aduseclient
dcgame.open "PROVIDER = Microsoft.Jet.Oledb.3.51;" & _
"Data Source= c:\game.mdb;"
2. 在数据库中执行操作.
DAO
dim qdf as querydef
set qdf=db.createquerydef("","Delete * from fighter")
qdf.execute
set qdf= nothing
ADO 利用command对象完成上述操作.
dim cmd as new adodb.command
cmd.commandtext="Delete * from fighter")
cmd.commandType=adCmdText
set cmd.activeConnection = dcgame (前边有定义)
cmd.execute
querydef 和 command还有一个区别在参数查询上, querydef的参数定义是在SQL语句中,而command(AdO其他对象也如此)的参数定义则完全变为对象定义.
3. 打开数据集
DAO
dim temprec as recordset
set temprec=db.openrecordset("Fighter")
(fighter可以是game.mdb中的一个查询或表名)
ADO
a. 直接通过 connection
dim gamerec as new adodb.recordset
gamerec.cursortype=adOpenKeyset
gamerec.LockType=adlockOptimistic
gamerec.open "fighter", dcgame, , adCmdTable
也可以通过 gamerec.open "Select * from fighter ", dcgame, _
, adCmdTable)
b. 通过Command
dim gamerec as new adodb.recordset
dim cmd as new adodb.command
cmd.commandtext="Select * from fighter")
cmd.commandType=adCmdText
set cmd.activeConnection = dcgame (前边有定义)
set gamerec=cmd.execute
4. 数据操作
a. 添加
基本未变.
b. 删除
基本未变.
c. 修改
DAO:
需要先调用Edit方法, 修改后Update.
ADO:
无须调用Edit, 直接修改,而后Update
2012年07月20日 23点07分
3