[转载].net 访问oracle的总结

  长期以来,我一直用的是 MS SQL Server / Access 数据库,通过.NET 访问MS自家的东西几乎没碰到过什么麻烦。最近项目中要用 Oracle 作为数据库,学习研究了一些 .NET 访问Oracle 的东西,发现问题倒真的不少。

1。System.Data.OracleClient 和 System.Data.OleDb 命名空间

   虽然通过这两个命名空间的类都可以访问 Oracle 数据库,但和 SQL Server 类似的(System.Data.SqlClient 命名空间的类效率要比 System.Data.OleDb 命名空间中的类高一些),System.Data.OracleClient 命名空间中的类要比 System.Data.OleDb 命名空间的类效率高一些(这一点我没有亲自验证,但大多数地方都会这么说,而且既然专门为 Oracle 作的东西理论上也应该专门作过针对性的优化)。

  当然还有另一点就是从针对性上说,System.Data.OracleClient 要更好一些:

   比如数据类型,System.Data.OleDb.OleDbType 枚举中所列的就没有 System.Data.OracleClient.OracleType 枚举中的那些有针对性;另外,Oracle 的Number 类型如果数字巨大,超出 .NET 数据类型范围的情况中,就必须使用System.Data.OracleClient 中的专门类 -- OracleNumber 类型。

  好了,不再赘述这两个的比较,下面主要讨论System.Data.OracleClient 命名空间中的类型,即 ADO.NET for Oracle Data Provider (数据提供程序)。

2。数据库连接:

   无论是 System.Data.OleDb 还是 System.Data.OracleClient 访问 Oracle 都需要在 .NET 运行的机器(ASP.NET 中就是 Web 服务器)安装 Oracle 客户端组件。(这一点是和 MS 的两种数据库不同的,MS 的东西安装 MDAC: Microsoft Data Access Component 2.6 以上版本后,就无须再安装 SQL Server 客户端或者 Office 软件,就能访问。)

System Requirements:

  (1) 如用 System.Data.OracleClient 访问 Oracle,客户端组件版本应在 Oracle 8i Client Release 3 (8.1.7)以上版本。MS 只确保访问 Oracle 8.1.6、Oracle 8.1.7、Oracle 9i 服务器时的情况。MDAC 2.6 以上。

  (2)如用 System.Data.OleDb 访问 Oracle,客户端组件版本 7.3.3.4.0 以上或 8.1.7.4.1 以上。MDAC 2.6 以上。

  如服务器为 Oracle8i 以上,客户端组件版本应为 8.0.4.1.1c。

  在 .NET 运行的机器中,安装 Oracle 客户端,然后打开 Net Manager (Oracle 9i) / Easy Config (Oracle 8i) 按你以前的经验设置本地服务的映射(这里的服务名将用于数据库连接串)。

  System.Data.OracleClient 中访问 Oracle 数据库的连接串是:

User ID=用户名; Password=密码; Data Source=服务名

  (上述为一般的连接串,详细的连接串项目可以在 System.Data.OracleClient.OracleConnection.ConnectionString 属性的文档中找到。)

  System.Data.OleDb 中的访问 Oracle 数据库的连接串是:

Provider=MSDAORA.1; User ID=用户名; Password=密码; Data Source=服务名

 

 

 

   关于访问方式的总结

我在查看ORACLE网站、MSDN2005及注册表之后,小有收获,特写此文,希望对各位有所帮助。

好了,废话结束,现在看正文:

1.ODBC方式
我们可以在 "我的电脑-> 控制面板-> (性能和维护-> )管理工具-> 数据源(ODBC)-> 系统DSN-> 添加 ",查看系统中已经安装好的ODBC驱动,其中就包含了“Microsoft   ODBC   Driver   for   Oracle”。
所以,如果用ODBC方式来访问ORACLE,可以不用安装ORACLE   CLIENT;

2.OLEDB方式
请大家打开注册表编辑器regedit,搜索oracle即可以搜索到以下键:
Microsoft   OLE   DB   Provider   for   Oracle
HKEY_CLASSES_ROOT\CLSID\{e8cc4cbe-fdff-11d0-b865-00a0c9081c1d}\OLE   DB   Provider
HKEY_CLASSES_ROOT\MSDAORA
所以,只要你安装了合适版本的MDAC,那么起码就已经可以使用OLEDB来访问ORACLE了。

3.System.Data.OracleClient方式
以上2种都是比较通用的方式,我们再来看看M$专门为ORACLE写的类。
请大家打开MSDN2005,输入地址
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs /WD_ADONET/html/054f76b9-1737-43f0-8160-84a00a387217.htm(您也可以通过目录、索引或者搜索 来找到)
《Oracle   .NET   Framework   数据提供程序的系统要求》(即System.Data.OracleClient命名空间中的类),摘要如下:
Oracle   .NET   Framework   数据提供程序需要   Microsoft   数据访问组件   (MDAC)   2.6   版或更高版本。建议使用   MDAC   2.8   SP1。
还必须安装   Oracle   8i   Release   3   (8.1.7)   客户端或更高版本。
Oracle   9i   版本之前的   Oracle   客户端软件无法访问   UTF16   数据库,因为   UTF16   是   Oracle   9i   中的一项新功能。要使用此功能,必须将客户端软件升级到   Oracle   9i   或更高版本。
哈哈,M$其实没有我们想象中的勤奋,他只是帮ORACLE   CLIENT做了个包装而已。

4.Oracle   Data   Provider   for   .net(ODP.NET)
我们再到ORACLE的老家转转,可以发现他在很多地方都吹嘘ODP.NET,看看它有些什么要求才能用吧。
请大家在浏览器中输入地址(ORACLE的网站有点慢,请不要急)
http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install
Q:   What   do   I   need   to   have   installed   on   my   client   machine   to   have   ODP.NET   work?
A:   You   will   require   the   following:  
Windows   2000,   Windows   XP   Professional,   or   Windows   Server   2003  
Microsoft   .NET   Framework   1.0   or   higher  
Oracle9i   Client   Release   2   (9.2)   or   higher  
Oracle   Net   Services   (included   with   the   client)  
Oracle   Services   for   Microsoft   Transaction   Server,   Release   2   (9.2)   or   higher.   This   is   required   for   applications   using   distributed   transacations.  
简单翻译:
如果你用ODP.NET来访问ORACLE数据库,你需要以下条件:
操作系统:WIN2K   XP   2003
.NET   FRAMEWORK   1.0以上
ORACLE9I以上的客户端

5.第3方的观点:
在   http://www.fawcette.com/vsm/2003_07/magazine/columns/databasedesign/  
有一篇文章叫 < <Take   Advantage   of   Oracle   in   .NET> >
讲了如何在可视环境下(也就是用鼠标点、拖等操作)访问ORACLE   。
用的似乎就是OLE   DB的方式。

好了,现在来做个总结。
同志们,回顾历史,展望未来,我们要发扬XXXX,高举YYYY(以下省略5000字)......
1.在不安装ORACLE客户端的情况下,可以用ODBC和OLEDB   2种方式来访问ORACLE;
2.如果喜欢多往别人的机器装东西,不怕麻烦,可以用“性能最好”(ORACLE网站这么说的)的ODP.NET来访问ORACLE;
3.如果用System.Data.OracleClient,可以稍微少装点东西,不过比2的帮助文档更多,并且我们似乎都习惯使用微软的东西。
4.推荐使用System.Data.OleDb中的类来访问ORACLE,优点:(1)因为我懒,我不喜欢往别人和我自己的机器里安装过多的东西; (2)可以运行在WIN98以上的系统下,而2   3中的方式只能在WIN2K以上的系统下;(3)ODBC似乎太老了点,看来我是中庸派的人......(哎,老了   -_-     )

好了,感谢您坚持看完本文,希望没有浪费您的时间,对您有所帮助。
posted @ 2010-11-14 09:46  大熊先生|互联网后端技术  阅读(1997)  评论(3编辑  收藏  举报