本文主要是介绍odp.net oracle objects for ole,ODP.NET - WEB程序开发 - ITPUB论坛-中国专业的IT技术社区...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于微软在
1、不在安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开)
2、不需要配置TnsNames.Ora文件
当然,我选择odp.net的最主要的原因还是性能。这篇文章列举了两者之间的对比。Technical Comparison: ODP.NET Versus Microsoft OracleClient
下面我将介绍如何在一个在新的项目中使用odp.net。环境配置:A机器,运行C#程序,没有安装oracle
首先要下载odp
下载完成之后不用安装,将Oracle.DataAccess.dll文件从 ODTwithODAC1110720.zip/stage/Components/oracle.ntoledb.odp_net_2/11.1.0.7.10/1/DataFiles/filegroup4.jar文件中解压出来就行,然后复制到项目中,再添加引用Oracle.DataAccess.dll。
编写如下代码:
using Oracle.DataAccess.Client;
…
string connstring =
“Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1527))” +
“(CONNECT_DATA=(SID=orcl)));User Id=sys;Password=sys;”;//这个也可以放到Web.Config中。
using (OracleConnection conn = new OracleConnection(connstring))
{
conn.Open();
string sql = “select * from users”;
using (OracleCommand comm = new OracleCommand(
代码编写好以后,还要从下载的压缩包中取出几个dll文件。
1、oci.dll (在jar文件里面叫’oci.dll.dbl’,拿出来之后去掉.dbl in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup2.jar)
2、oraociicus11.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.ic/11.1.0.7.0/1/DataFiles/filegroup3.jar)
3、OraOps11w.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.ntoledb.odp_net_2/11.1.0.7.10/1/DataFiles/filegroup3.jar)
4、oraons.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.ons.ic/11.1.0.7.10/1/DataFiles/filegroup1.jar )
下面这三个有人说需要,有人说不需要,反正也不差这三个,继续吧:
5、orannzsbb11.dll (in ODTwithODAC1110720.zip/stage/Components/oracle.ldap.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup1.jar)
6、oraocci11.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup3.jar)
7、ociw32.dll (在jar文件里面叫’ociw32.dll.dbl’,拿出来之后去掉.dbl in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup2.jar)
最后把这个DLL复制到项目中,CS的要与exe一个文件夹,B/S的有专门的bin目录。
当然,使用一项新技术,必然会遇到一些错误:以下是我遇到的:
1、运行的时候遇到这个异常提示’The provider is not compatible with the version of Oracle client’,不要紧张,检查一下上面所用到的dll是否齐全就OK。
2、“找不到请求的 .Net Framework 数据提供程序。可能没有安装。”这个错误提示是因为在machine.config中找不到Oracle.DataAccess.dll,将下面的代码放到
之间就OK。
注:如果下载的不是ODTwithODAC1110720,有可能dll的位置不像是上面提到的那样,需要自己去挨个找了:(
1:在上面列出的DLL中,其中Oracle.DataAccess.dll和OraOps11w.dll才是ODP
2:各版本的ODTwithODAC包,其DLL位置都不相同,在新版本的包中,上面列出的DLL中,有些DLL已经去掉了(比如orannzsbb11.dll),而且Oracle.DataAccess.dll也根据.net的版本分为多个(以ODTwithODAC112030为例,其中包含2.x和4.0两个版本,分别对应vs2005与2010,开发时需要取用对应的包),使用时注意所取的DLL文件是否正确
3:对于连接字符串,上文中使用的是:
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1527))(CONNECT_DATA=(SID=orcl)))
这个是比较典型的tnsname写法,除了这种写法外,ODP
ort][/service_name]
例如,上文中的例子即可写成Data Souce=192.168.0.100:1527/orcl
此外,在这里也同样可以引用tnsnames.ora中配置好的连接(在本机装有Oracle的前提下),有两个方法:直接在程序中设置环境变量TNS_ADMIN,将其指向network/admin,或设置环境变量ORACLE_HOME,程序会自动去 %ORACLE_HOME%/network/admin下查找tnsnames.ora
4:进行
Environment.SetEnvironmentVariable(“ORA_TZFILE”, null);
Environment.SetEnvironmentVariable(“NLS_LANG”, “AMERICAN_AMERICA.AL32UTF8″);
Environment.SetEnvironmentVariable(“NLS_DATE_FORMAT”, “DD-MON-RR”);
Environment.SetEnvironmentVariable(“NLS_TIME_FORMAT”, “HH.MI.SSXFF AM”);
Environment.SetEnvironmentVariable(“NLS_TIMESTAMP_FORMAT”, “DD-MON-RR HH.MI.SSXFF AM”);
Environment.SetEnvironmentVariable(“NLS_TIMESTAMP_TZ_FORMAT”, “DD-MON-RR HH.MI.SSXFF AM TZR”);http://www.th7.cn/db/Oracle/201405/55743.shtml
这篇关于odp.net oracle objects for ole,ODP.NET - WEB程序开发 - ITPUB论坛-中国专业的IT技术社区...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!