数据库高手come here

netsong 2001-06-16 03:51:00
用VC作数据库程序,要操纵oracle用那种方式最好?各有什么优缺点?
...全文
174 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
acute 2001-06-19
  • 打赏
  • 举报
回复
回复人:netsong() (2001-6-18 14:26:00) 得0分
to acute: ADO是基于OLE的,OLE比ADO更低层,为什么ADO在速度上会稍胜那么一点点?(在道理上好像说不通)。

我也搞不大懂,但这是我的测试结果,可以给你点数据:

OLE和ADO连接数据库到取得记录集的时间的比较(ORACLE数据库)
1 2 3 4 5 6 7 8 9 10
OLE 0.801 0.791 0.832 0.731 0.801 0.741 0.731 0.811 0.791 0.761
ADO 0.57 0.561 0.551 0.581 0.621 0.561 0.561 0.531 0.611 0.581
OLE和ADO从建立连接到得到记录集时间的比较(SQL SERVER数据库)
1 2 3 4 5 6 7 8 9 10
OLE 0.12 0.121 0.11 0.111 0.12 0.11 0.12 0.12 0.11 0.11
ADO 0.13 0.131 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.13
maxsuperkiller 2001-06-19
  • 打赏
  • 举报
回复
VC5.0支持ADO吗?如在VC5.0下使用ADO?
wyzegg 2001-06-18
  • 打赏
  • 举报
回复
最快当然用PRO_C/C++啦,直接使用游标多爽不比较麻烦,但是如果追求速度用这个最好啦.
其他的用ADO也很好.
至于PRO_C/C++搞个例子看看差不多啦
maxsuperkiller 2001-06-18
  • 打赏
  • 举报
回复
ado or ole db
njtlxm 2001-06-18
  • 打赏
  • 举报
回复
我正好完成了用dao、ado、ole db对access、sql server和oracle的接口编码,所以说上几句,请多指教。
用dao好像最适合用于access,ado是基于ole db的,编码量要少一些,而且比较容易理解,可以考虑。ole db的编码多一些(对于使用纯com接口方式的话),要是用atl模板类编码会少一些。
如果你是确定用oracle数据库的话,不妨试试oracle object for ole,这是oracle自己带的接口库,里面有很多类,使用起来比较方便而且容易理解,而且速度和ole db差不多。
还有,我对几个数据库进行过几个方面的测试,oracle在打开数据库的时候(就是建立数据库连接)的速度相当慢,大约需要2.5秒(ole db和oracle object for ole),所以尽量在程序中使用一个数据库对象,一次打开即可,如果反复打开和关闭,则oracle的速度和sql server比是无法忍受的。
我也只是刚刚完成以上几个数据库接口方式的编码,有理解错误的地方,请各位指出,可以来信交流:njtlxm@263.net
acute 2001-06-18
  • 打赏
  • 举报
回复
呵呵,楼上的扬扬洒洒那么长,就如我对你的景仰,如滔滔江水,一发而不可收拾……

我曾经以此为课题,专门进行了测试。
通过打开数据库连接,添加操作,删除操作三方面的指标,利用VC,对ORACLE数据库进行操作。
分别采用了ODBC,OLE,和ADO三种连接技术。ODBC速度明显的要慢得多,当然,如果你用微软提供的ORACLE OLE引擎的话,甚至比ODBC还要慢!!(千真万确!!)所以,大家都用ORACLE自带的OLE引擎。
在对OLE和ADO的比较中,速度上ADO稍胜那么一点点点,不明显。而VC++开发中,我个人认为,OLE比ADO对底层控制要好,因为ADO是建立在OLE基础上的高端技术,而且,就我个人经验,VC6开发OLE有好多现成的东西可以利用,在代码编写量上要比ADO少很多(当然如果你用VC5我可就不敢这么说了),有很多书介绍说ADO编写代码量要少,我看可能不是针对VC6来说的,因为我使用的感觉恰恰相反。
因此,我建议,采用OLE是用VC开发ORACLE数据库有关程序的最佳选择
seesi 2001-06-18
  • 打赏
  • 举报
回复
呀!不太清楚!
不过我知道 OLEDB 是基于 COM 的一组接口规范,用来访问各种数据源,主要由数据源提供商来实现,如 ORACLE、SQL Server、Access。
ADO 是利用 OLEDB 提供的基本接口,加以封装,形成简单易用的一组对象/方法/属性集合,方便快速开发。
ODBC 是在 C 语言级别上实现的一组调用规范,目的也是访问各种数据源,不过现在来说比较老了(个人观点)。
DAO 建立在 MS JET 技术 (最早在 Access 中实现)上的,主要是用来访问所谓的桌面数据库(Access/FoxPro/dBase 等)。
 回复人:GoodLuckForYou(GoodLuckForYou) (2000-12-13 11:56:00) 得10分
应该说,从效率上看,ODBC效率最快。从通用性看,OLEDB最好。从方便性看,ADO和DAO最好。如果你开发的程序是使用ACCESS数据库的,不妨使用DAO。MSDN中的文档说,推荐使用OLEDB或ODBC!
 回复人:FireAngel(堕落天使) (2000-12-13 12:36:00) 得6分
ODBC效率未必有OLEDB高。现在有些OLEDB并不是在ODBC的基础上封装的
 回复人:kisa(kisa) (2000-12-13 17:07:00) 得4分
看《VC++ 6.0编程技术内幕》
 回复人:yandw(期盼) (2000-12-14 15:00:00) 得0分
关注
 回复人:zzh() (2000-12-14 19:01:00) 得0分
这几种都是访问数据库的方法,对于这几种数据库访问方法的详细使用包括说明,你可以参考开发文档当中的文章〈用VC操作数据库〉其中有对这四种方法的详细介绍,同时还附有例子,如果还有问题,可以发EMAIL给我。
 回复人:yandw(期盼) (2000-12-19 14:00:00) 得0分
to zzh:
我在开发文档中找不到,您能发给我吗?yandw007@sina.com 多谢
 回复人:wanghu(不懂就是不懂) (2000-12-19 14:36:00) 得20分
odbc,oledb,ado的关系:
odbc: 曾经的数据库通信标准
oledb: 在一切对象化的趋势下,ms打算用它取代odbc.
oledb分两种:直接的oledb和面向odbc的oledb,后者架构在odbc上,这
样没有自己的oledb提供者的数据库也可以使用oledb的特点了。oledb的效率要高
于odbc.
ado: 其实只是一个应用程序层次的界面,它用oledb来与数据库通信。
 回复人:myb123(myb123) (2000-12-19 14:48:00) 得0分
关注!!!
 回复人:softsprite(软件精灵) (2000-12-19 14:56:00) 得20分
DAO用于访问桌面数据库,如access等,基于Jet数据库引擎
OLEDB可以访问关系型数据库和非关系型数据库(如CSV文本等),基于COM,M$大力推荐的。
ADO是OLEDB的封装,为了方便使用OLEDB,可以在VBScript或JavaScript中使用。
ODBC太古老了,效率不高,而且只能访问关系型数据库。

另外还有一种:OLEDB模板,将OLEDB封装成模板来使用,比较方便,我喜欢!
个人建议:在VB、VBScript、JavaScript中使用ADO,VC中使用OLEDB模板。
 回复人:acute(毛头) (2000-12-19 15:00:00) 得20分
ODBC:开放数据库互连标准
DAO:数据访问对象
OLE DB:对象链接和嵌入数据库
ADO:ActiveX数据对象

OLE DB由一组COM接口组成的,而这些接口提供集中的数据库管理服务。
ADO是类属于OLEDB的用户程序,设计用来访问任何OLEDB供应程序。还可以复制早期数据库技术所支持的接口。它的主要目标是使得OLEDB供应程序提供的普通运算更容易。听说能跨平台使用。
ODBC我就不想多说了,以前和现在一部分程序都建立在ODBC基础上,我都说累了。
DAO已经广泛的被ODBC和OLEDB所代替了,而且DAO也确实不应该再于新应用程序的开发中了。也就无需多说了。
 回复人:acute(毛头) (2000-12-19 15:00:00) 得0分
ODBC:开放数据库互连标准
DAO:数据访问对象
OLE DB:对象链接和嵌入数据库
ADO:ActiveX数据对象

OLE DB由一组COM接口组成的,而这些接口提供集中的数据库管理服务。
ADO是类属于OLEDB的用户程序,设计用来访问任何OLEDB供应程序。还可以复制早期数据库技术所支持的接口。它的主要目标是使得OLEDB供应程序提供的普通运算更容易。听说能跨平台使用。
ODBC我就不想多说了,以前和现在一部分程序都建立在ODBC基础上,我都说累了。
DAO已经广泛的被ODBC和OLEDB所代替了,而且DAO也确实不应该再于新应用程序的开发中了。也就无需多说了。
 回复人:arthree(ArTHREE) (2000-12-19 15:31:00) 得0分
wanghu对oledb的描述挺好。
 回复人:taolei(实在无聊) (2000-12-19 15:46:00) 得0分
同意wanghu的观点,只是在效率上ODBC和OLEDB不可直接比较。他们是两种接口规范。
MS Sql Server7.x及其更高版本的最底层Driver是OLEDB (USE TDS),ODBC Drvier是用OLEDB Driver 封装的;而大多数其他数据库只提供ODBC Driver,而OLEDB 用的是OLEDB over ODBC。
关于性能问题就显而易见了。
 回复人:wanghu(不懂就是不懂) (2000-12-19 16:30:00) 得0分
taolei,你好。关于sql server7.x我还有一些疑问:
你说sql server最底层Driver是OLEDB (USE TDS),我觉的不大正确。
第一:sql server只是在服务端的各个引擎(如命令分析器,加锁管理器)之间通信时采用了oledb机制.
第二:tds(表格式数据流)是sql server客户端和服务端之间采用的专用自描述数据流,他们可以由odbc,oledb,db-library发出和接受。不单单是oledb.
第三:ODBC比OLEDB古老,你说ODBC用OLEDB封装,那么在SQL SERVER中重写了ODBC吗?
谢谢回答

下面的图出自《SQL SERVER 7.0技术内幕》p65,请参考:

--------SQL SERVER客户应用程序-------
¦ ¦ ¦
¦ ¦ ¦
OLE DB ODBC DB-LIBRARY
¦ ¦ ¦
¦________________¦__________________¦
客户网库
客户机 ¦
————————————————————————————————————————
网络
________________________________________________________________________________
服务器 ¦
服务器网库
¦
ODS(开放式数据服务)
¦
SQL SERVER(一堆引擎的集合)

 回复人:adidasprince(阿达王子) (2000-12-19 17:25:00) 得0分
OLEDB的优点主要是他是类似于抽象层的接口,他不仅可以连接数据库,还可以连接文件,mail等等一切的一切,但是上层对他的调用都一样(看出M$喜欢“封装”的作风了吗?)
 回复人:bush(bush) (2000-12-19 18:39:00) 得0分
to zzh:
我需要你的帮助!!
gatesgo@21cn.com

 回复人:taolei(实在无聊) (2000-12-20 17:30:00) 得0分
to: wanghu
也许我说的不正确,但是有一点需要指出,Sql Server7.0及其以后产品不再提供DB-Library,
也就是说DB-Library的最后一个版本是for 6.5的。

 回复人:netskiff(西雪吹门) (2001-5-25 19:22:00) 得0分
关注!
 回复人:111(沉默的羔羊) (2001-6-6 19:31:00) 得0分
DAO、 RDO和ADO的比較 及ODBC和OLE2


DAO (Data Access Objects數據訪問對象)是第一個面向對象的介面,它提供了另一种本地操作數据庫的机制,它通過程序代碼而不是中間層(比如OLE,ODBC)來訪問數据庫.多個DAO构成一個体系結构,在這個結构中各個DAO協同操作.它曾經是訪問本地數据庫( Microsoft Jet 數据庫引擎)最強有力的工具. 需要說明的是后來又出現了ODBCDirect, 它為DAO提供了訪問遠程ODBC數据的全部能力,使DAO能夠訪問遠程數据庫,但這并不說明DAO仍有前途可言.(呵呵,個人看法,上當莫怪)

RDO (Remote Data Objects遠程數据對象)是一個專門為訪問訪問遠程ODBC關系數据庫而開發的程序接口,它同易于使用的 DAO style組合在一起,提供了一個能利用所有 ODBC 的底層功能的介面。RDO 在地訪問 Jet 或 ISAM 數据庫,以及只能通過現存的 ODBC 驅動程式來訪問關系數据庫方面受到諸多限制。所以在OLE訪問日漸成為趨勢的今天,這并不是一個很好的選擇.(聲明同上).


ADO (ActiveX Data Objects)提供了与DAO,RDO完全不同的數据訪問方式--OLE。ADO 主要包括 RDO 風格的功能性,以便和 OLE DB 資料源交互,另外還包括遠端和 DHTML 技術。不過,也應當注意,ADO 當前幷不支援 DAO 的所有功能(比如幷不支援資料定義 (DDL)、用戶、組,等等) ,沒有與 rdoEngine 和 rdoEnvironment 物件相類似的物件來顯露 ODBC 驅動程式管理器和 hEnv 介面。儘管事實上您的介面可能是通過 ODBC OLE DB 服務提供程式實現的,但您當前也不能從 ADO 中創建 ODBC 資料源。幸好ODBC過時的呼聲越來越高漲.


以上著重從編程的角度討論了訪問數据庫的不同方法,從敘述中我們可以看到以上方法种种的不同本質上都是的訪問方式的不同.主要區別在于:
1,是否采用了分層的方式來訪問數据庫,比如,dao 与odbc,ole之間顯著的不同.軟件技術從最初的不分層,到c/s結构,到如今的多層結构.都是通過設計通用的中間層來簡化程序設計.
2,是支持com 架构的ole訪問方式,還是支持odbc架构的odbc驅動訪問,從大多數的說法來看,好像ole是今后軟件技術支持的重點.

這之間的差別有些并不如我所說的那么明顯,各种各樣的變化正在繼續.我從訪問數据庫的角度總結了一張表:對不起,沒畫成電子圖.
seesi 2001-06-18
  • 打赏
  • 举报
回复
ADO好,标准一致的数据访问方式。
leky2000 2001-06-18
  • 打赏
  • 举报
回复
以个人的喜好来定,就象小马过河
leky2000 2001-06-18
  • 打赏
  • 举报
回复
哎,我倒觉得各有优缺点
kook 2001-06-18
  • 打赏
  • 举报
回复
我用的是OCI
kenny_yuan 2001-06-18
  • 打赏
  • 举报
回复
忘了说
现在我就是Oracle的DBA
kenny_yuan 2001-06-18
  • 打赏
  • 举报
回复
OCI
kenny_yuan 2001-06-18
  • 打赏
  • 举报
回复
当然还是OCI最好!
netsong 2001-06-18
  • 打赏
  • 举报
回复
to acute: ADO是基于OLE的,OLE比ADO更低层,为什么ADO在速度上会稍胜那么一点点?(在道理上好像说不通)。
netsong 2001-06-17
  • 打赏
  • 举报
回复
还想知道一下oledb和dao与ado在数据库访问方面的区别和忧略
netsong 2001-06-17
  • 打赏
  • 举报
回复
深入一点行吗?
liu_feng_fly 2001-06-17
  • 打赏
  • 举报
回复
dao的基础是ODBC
ado的基础是oledb
并且,将来dao不会再发展了,而ado很有前途,当然用ado了
netsong 2001-06-17
  • 打赏
  • 举报
回复
不会吧,没人关心?
555~~~~~~~~~~~~~~
sinx 2001-06-16
  • 打赏
  • 举报
回复
ADO
加载更多回复(1)

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧