技术开发 频道

两种Oracle应用程序开发接口的对比分析


六.ADO与OCI对比分析

1.功能方面
ADO为了保持其通用性,除了对MS SQLServer支持较好外,没有办法对其他数据库提供很完善的功能,对Oracle同样如此。通过ADO访问Oracle,可以实现比较通用的功能,如DML、DDL、查询、事务控制等,但对于Oracle中的对象、集合、LOB等特殊元素则不能很好地支持,对于PL/SQL的支持也很不完整。而OCI在这方面则有着显著的优势,它可以很完整地支持Oracle的所有功能,可以说是对Oracle功能支持最完整的开发接口。而且OCI可以支持多种操作系统,而ADO则只能在Windows系列操作系统下运行。
但在支持面方面,ADO则有很大优势:一方面,它几乎支持目前所有流行的数据库,如MS SQLServer、Oracle、Sybase、DB II等,写好的访问一种数据库的代码,可以稍做修改就能支持另一种数据库,这是ADO的巨大优势;另一方面,它也几乎支持目前所有的开发环境,不管是采用VC开发还是用VB开发,甚至采用Delphi、ASP等等都可以使用ADO来访问数据库。

2.性能方面
从上面的实验结果可以看出,在性能方面,OCI也有着非常大的优势,读取数据的速度快了4倍多,写入数据的速度快了一百多倍。
由于OCI省掉了应用程序与Oracle服务器之间的中间封装层,可以直接访问数据,另外,OCI是C接口,可以直接操纵内在,所以其访问速度非常快,占用系统资源和网络资源也都要少得多。
在笔者的开发经验中,对于存储在Oracle中的二进制数据(如空间数据、影像数据)及长字符串数据,OCI的性能优势要更加明显.。

3.开发难度方面
在这方面ADO的优势很明显,首先,ADO的学习难度较低,ADO是以面向对象的思想封装的,其对象和方法都易学易用,而且ADO的学习资料很丰富,网上可以找到大量的文档及源代码;而OCI则是过程化封装的开发接口,它的函数虽然不是很多,但函数之间的关系比较复杂,且函数的参数非常多,很多函数都有十几个参数,非常难于理解。另外,国内使用OCI开发的程序员比较少,可用的参考资料也非常少,所以OCI的学习难度很大。
另一方面,OCI开发的程序的代码量要比ADO的多得多,且代码之间的关系比较复杂,不易维护。
为了解决这一方面的问题,笔者基于OCI进行了基于面向对象思想的封装,简化了OCI 的开发模型,并封闭了OCI的异常处理机制,使得OCI的开发难度大大降低,代码量能够接近于ADO的代码量,且更易维护。这一部分的内容不属于本文讨论范围,所以不在此展开论述。

七.总结与结论
  ADO与OCI是在VC中开发Oracle应用程序的常用的两种接口,它们各自有着自己的特点,有独特的优势,也都有自己的局限性,在开发过程中我们需要根据具体情况来选择使用哪种开发接口。
如果应用程序需要访问多种数据库,既要访问存储在Oracle中的数据,也要访问存储在MS SQL Server中的数据,那么ADO是非常好的选择,它可以使用一套代码实现多种数据库的访问。
如果应用程序只需要访问Oracle数据库,且对性能要求很高,那OCI就是最好的选择了。

参考文献
1 骆昌平. ADO技术及其在VC数据库开发中的应用. 电信交换,2005,1
2 李陇杰 数据库开发应用:VC下开发ADO的封闭类 软件开发与应用 2006.2
3 杨培章,马东祥,陶治宇,陈朝辉 OCI接口简介及其在VC++中的应用 电脑编程技巧与维护,2003,11
4 曹志聪,姚国祥 基于OCI技术的Oracle数据库连接 微机发展, 2004,8
5 金沂 基于Oracle数据库的C程序设计 计算机与网络,2006,12
6 郑军,陈正阳 利用OCI与OLE开发Oracle空间数据库 计算机工程与设计 2004.6
7 李乾富,黄书强 VC++ 6.0访问Oracle LOB的方法 微型机与应用 2003.2
8 高博,张亚东 常用数据库访问技术的研究 河南科技 2005.12
9 Oracle文档库 Oracle Call Interface Programmer’s Guide Release 2 (9.2), Part Number A96584-01
0
相关文章