分享
 
 
 

几种用VB访问Oracle数据库技术的比较

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

用Visual Basic访问Oracle数据库有许多方法可以实现,而每种方法都有其优缺点。你可以选择最适合你工作环境的方法,首先你必须了解这些方法是什么。在这篇文章里介绍一些访问Oracle数据库的常见方法,对每种方法进行简单的概述,并就每种方法的技术和特点进行比较,希望能给广大读者提供一些借鉴。

一、数据访问对象(DAO)

数据访问对象在很长一段时间内是Visual Basic访问数据库功能的主要技术。DAO已经存在了许多年并经历了多次修改,但它依然是许多数据库的对象模型。尽管DAO是数据访问中最弱的一种,但它同时也是最为人所熟知的。尽管DAO模型存在局限,但它依然有许多大量的函数可供Oracle用户使用,某些方面性能还可以令人接受的。

DAO是一项过时的技术,尽管它仍应用于许多程序,但与新技术相比,它存在一些明显的缺点:

·DAO拥有的对象模型功能比较弱,在所有的数据库访问技术中它的功能最弱。

·DAO被设计为适用于JET而没有调整为适用于ODBC数据源。

·DAO不适合处理大量不同类型的数据源。

二、远程数据对象(RDO)

RDO是一种围绕着API产生的“包装” 性软件,它封装了API中的许多功能部件,为开发者提供了ODBC驱动器的所有功能。

RDO是通过ODBC数据源访问数据的标志性技术,它围绕着ODBC API进行设计,并不完全适合与Oracle。尽管相对于DAO来说,它有很大的进步,但它的一些功能部件不适用于Oracle用户,因为Oracle的体系结构与SQL服务器体系存在相当大的差异。RDO的缺点:

·微软认为它过时了,不会再给它投入更多的工作。

·不能通过存储过程检索PL/SQ游标变量。

·RDO依靠于ODBC驱动器,通常会受到它们之间不相容性之间的影响。

三、ActiveX数据对象(ADO)

ADO不但可以进行异步查询、连接和开放式处理,而且还能基于文件和独立的Recordset、分层结构Recordset等。它提供一种稳定的接口来使用户利用多种不同的数据源包括从文本文件到ODBC关系型数据库到复杂的数据库组。

ADO是当前微软的顶尖技术。随着版本的更新,在事件模型部分更加成熟,但从Oracle用户的角度出发,这个技术仍存在一些缺点:

·不能通过存储过程检索PL/SQ游标变量。

·不能使用Oracle邦定参数。

·数据环境还会带来一些问题,它相对来讲,还不够成熟。

·数据环境不支持Oracle打包过程。

·处理Oracle中的大对象比较困难

四、Oracle的OLE对象(OO4O)

Oracle的OLE对象(OO4O)是一种进程中的OLE服务器,它提供了一种对象层次结构,与DAO非常相似,但却不采用ODBC标准。它利用Oracle的调用接口来与Oracle会话。其中Oracle的调用接口是一种本地代码驱动器。令人遗憾的是它不能访问其他数据库。

OO4O拥有优异的功能性,访问Oracle数据库,其他任何数据库访问方式很难达到它的功能性。但OO4O仍有不足:

·在某些实例中,它的速度不是最快的。部分原因是因为它是一种进程中的服务程序。

·OO4O不支持异步操作或事件。

·OO4O不支持GetRows方式。OO4O主要被设计用于可更新动态集。

在OO4O中,连接是比较轻易实现的,你只需简单的键入你的用户名、口令和数据库别名即可。对象模型与DAO的相似,比较明显的不同是所有的对象前面都冠有“Ora”字样。下面这些代码创建了Ora会话对象和相应的Ora数据库对象,然后又创建了Ora动态集来保存所检索的结果集。最后,关闭了Ora动态集和Ora数据库对象。

程序清单

PRivate sub FetchOO4O()

Dim Orasession As Object

Dim OraDatabase As Object

Set OraSession(i) = CreateObject("OracleInProcServer.XOraSession")

Set OraDatabase(i) = OraSession(i).DbOpenDatabase("exampledb", "scott/tiger", 0&)

'Connect to the daabase

Set OraSession = CreatObject("OracleInProcSever.XoraSession")

Set OaDataBase = OraSession.OpenDatebase("beq-local",_

"video_user/ummagumma",ORADB_DEFAULT)

'Run then query

strSQL="SELECT * FROM video_store.movies ORDER BY movie_id"

Set rsMovies = OraDateBase.CreatDynaset(strSQL,ORADYN_READONLY)

'Display the fields

while not rsMovies.EOF

FOR ifields = 0 to rsMovies.fields.Count-1

Debug. rsMovies.(iFields)

Next 'iField

rsMovies.MoveNext

Wend

Set rsMovies = Nothing

Set OraSession= Nothing

End Sub

五、各种方法的比较

上面已经列举了4种访问Oracle数据库的方法,下面进行一下总结。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有