1、在没有安装oracle客户端的设备上也能访问服务器上的oracle (通俗的讲就是:开发的应用程序 和 oracle数据库服务器分别在两台电脑上)
2、不需要配置TnsNames.Ora文件

开发环境 :

操作系统:win10

开发工具:VS2010

运行环境:.net 4.0

首先要下载odp.net文件,可以在这个页面下载Oracle Data Access Components (ODAC) Downloads  (http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html),

我下载的是ODAC 11.2 Release 4 and Oracle Developer Tools for Visual Studio (11.2.0.3.0)这个版本。

ODTwithODAC112030.zip 221 MB (231,828,322 bytes)

下载完成之后先用winrar解压,不用安装。

然后,在ODTwithODAC112030文件夹找

第一个路径: ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\  找到  filegroup2.jar 文件,

用winrar解压 filegroup2.jar ,

解压后 ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup2\odp.net\bin\4\

目录中找到 Oracle.DataAccess.dll

第二个路径:ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\  找到  filegroup16.jar  文件,

用winrar解压 filegroup16.jar ,

解压后 ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup16\bin\

目录中找到 OraOps11w.dll

第三个路径:ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles  找到  filegroup2.jar 文件,

用winrar解压 filegroup2.jar,

解压后 ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup2\bin

目录中找到 oci.dll.dbl  和  ociw32.dll.dbl ,去掉 .dbl  文件就变成了oci.dll  和 ociw32.dll

第四个路径:ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles  找到  filegroup3.jar 文件,

用winrar解压 filegroup3.jar,

解压后 ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup3\bin

目录中找到 oraocci11.dll

第五个路径:ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles 找到  filegroup4.jar 文件,

用winrar解压 filegroup4.jar,

解压后 ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup4\instantclient\light

目录中找到 oraociicus11.dll

第六个路径:ODTwithODAC112030\stage\Components\oracle.ldap.rsf.ic\11.2.0.3.0\1\DataFiles 找到  filegroup1.jar 文件,

用winrar解压 filegroup1.jar,

解压后 ODTwithODAC112030\stage\Components\oracle.ldap.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup1\bin

目录中找到 orannzsbb11.dll

如何报下面的错误:

ORA-12737: Instant Client Light: unsupported server character set %s

是因为缺少 oraociei11.dll 这个动态链接库。

第七个路径:ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles 找到  filegroup3.jar 文件,

用winrar解压 filegroup3.jar,

解压后 ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup3\instantclient

目录中找到  oraociei11.dll

最后把这些动态链接库

Oracle.DataAccess.dll 

 OraOps11w.dll  oci.dll  ociw32.dll oraocci11.dll  oraociicus11.dll orannzsbb11.dll 

oraociei11.dll

复制到项目中,C/S架构的要与exe一个文件夹,B/S架构的有专门的bin目录。

我将这些动态链接库放在压缩包里供大家下载

odp_net_client_dll.part1.rar

odp_net_client_dll.part2.rar

因为 oraociei11.dll 文件100多兆,无法上传。

用VS2010(C#)新建一个项目(选择.net framework 4.0) ,添加引用Oracle.DataAccess.dll

编码如下:

using Oracle.DataAccess.Client;

            string connstring = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.123)(PORT=1521))" +
                                "(CONNECT_DATA=(SID=xe)));User Id=system;Password=test963;";
            using (OracleConnection conn = new OracleConnection(connstring))
            {
                conn.Open();
                string sql = "select * from cd_subject";
                using (OracleCommand comm = new OracleCommand(sql, conn))
                {
                    using (OracleDataReader rdr = comm.ExecuteReader())
                    {
                        DataTable dt = new DataTable();
                        dt.Load(rdr);
                        dataGridView1.DataSource = dt;
                        dataGridView1.Refresh();
                    }
                }
                conn.Close();
            }

实测环境

操作系统:winxp 

运行环境:.net4.0

测试了简单的SQL语句

结果:可以正常访问服务器上的oracle数据库。

参考:http://www.cnblogs.com/netuml/archive/2013/02/28/2936642.html 

.net4.0中使用ODP.net访问Oracle数据库(无需安装oracle客户端部署方法)的更多相关文章

  1. .net远程连接oracle数据库不用安装oracle客户端

    asp.net远程连接oracle数据库不用安装oracle客户端的方法下面是asp.net连接远程Oracle数据库服务器步骤: 1.asp.net连接oracle服务器需要添加Sytem.Data ...

  2. .net远程连接oracle数据库不用安装oracle客户端的方法

    .net远程连接oracle数据库不用安装oracle客户端的方法步骤: 1.添加Sytem.Data.OracleClient命名空间. 2.连接时需要ConnectionString字符串,出现在 ...

  3. C# 连接Oracle 11g 无需安装Oracle客户端

    1.首先到Oracle网站上下载ODAC 下载地址1:http://download.csdn.net/detail/easyboot/9456476 下载地址2:http://www.oracle. ...

  4. SqlDbx连接oracle(无需安装Oracle客户端)

    下载地址:https://download.csdn.net/download/xzplinke/10428957 解压SqlDbx.zip,将SqlDbx放到C:盘根目录(C:\SqlDbx 路径是 ...

  5. <pages validateRequest="false"/>在.net4.0中无效的问题

    再web.config中设置<pages validateRequest="false"/>在.net4.0中无效的问题 解决方案: <system.web> ...

  6. [置顶] c++,vc6.0,中友元函数,无法访问私有字段(private)的问题(problem),cannot access private member declared in class 'Date'

    c++,vc6.0,中友元函数,无法访问私有字段(private)的问题(problem),cannot access private member declared in class 'Date' ...

  7. 关于.net4.0中的Action委托

    在使用委托时,若封装的方法无返回值,并且参数在0-7个,可考虑使用.Net4.0中的Action委托,建议使用系统自带的,减少自定义 public delegate void Action<in ...

  8. IBatisNet+Oracle.ManagedDataAccess打造无需安装oracle客户端和ODP即可连接oracle数据库

    库环境: Oracle.ManagedDataAccess 版本:4.122.1.0 IBatisNet  版本:1.6.2 其实很简单的,只需在驱动配置那里添加上Oracle.ManagedData ...

  9. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。

    题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...

随机推荐

  1. Java获取IP地址:request.getRemoteAddr()注意

        在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户 ...

  2. C语言的struct/union字节对齐

    C语言的一大优势就是对内存空间的控制,当然,一般情况下对于开发人员来说都是透明的.看一个始终困扰初学者的问题:字节对齐! 先看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对 ...

  3. 使用HTML5的十大原因

    你难道还没有考虑使用HTML5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在IE中不好使,或者你就是喜欢写比较严格的XHTML代码.HTML5是web开发世界的一次重大的改变,事实上不 ...

  4. sql server 复制 需要有实际的服务器名称才能连接到服务器……

    原因是:之前修改过服务器实例名称执行一下语句 select @@servername select SERVERPROPERTY ('servername') 可以看到,两个不同的结果 修改实例名称i ...

  5. easyui combobox筛选(拼音)

    1.combobox本身的筛选 $('#cc').combobox({ filter: function(q, row){ var opts = $(this).combobox('options') ...

  6. JavaScript的角色巨变和Web技术的发展

    曾经JavaScript是职业程序员看不上眼的脚本语言,如今只有高级程序员才能驾驭它. JavaScript性质和地位的天翻地覆,正是Web技术飞速变化的印证. 最初职业程序员轻视JavaScript ...

  7. cocos2dx的图片载入

    //data: 图片文件数据 dataLen: 文件长度 bool Image::initWithImageData(const unsigned char * data, ssize_t dataL ...

  8. careercup-高等难度 18.9

    18.9 随机生成一些数字并传入某个方法.编写一个程序,每当收到新字符数字时,找出并记录中位数. 类似:设计一个数据结构,包括两个函数,插入数据和获得中位数 解法: 一种解法是使用两个优先级堆:一个大 ...

  9. ext2文件系统

    2.1. 总体存储布局 我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的 ...

  10. j疑难杂症:ava.lang.NoSuchMethodError: com.opensymphony.xwork2.util.finder.ClassFinder.<init>

    严重: Exception starting filter struts2java.lang.NoSuchMethodError: com.opensymphony.xwork2.util.finde ...