• .net4.0中使用ODP.net访问Oracle数据库(无需安装oracle客户端部署方法)


    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文件夹找

    第一个路径: ODTwithODAC112030stageComponentsoracle.ntoledb.odp_net_211.2.0.3.01DataFiles  找到  filegroup2.jar 文件,

    用winrar解压 filegroup2.jar ,

    解压后 ODTwithODAC112030stageComponentsoracle.ntoledb.odp_net_211.2.0.3.01DataFilesfilegroup2odp.netin4

    目录中找到 Oracle.DataAccess.dll

    第二个路径:ODTwithODAC112030stageComponentsoracle.ntoledb.odp_net_211.2.0.3.01DataFiles  找到  filegroup16.jar  文件,

    用winrar解压 filegroup16.jar ,

    解压后 ODTwithODAC112030stageComponentsoracle.ntoledb.odp_net_211.2.0.3.01DataFilesfilegroup16in

    目录中找到 OraOps11w.dll

    第三个路径:ODTwithODAC112030stageComponentsoracle.rdbms.rsf.ic11.2.0.3.01DataFiles  找到  filegroup2.jar 文件,

    用winrar解压 filegroup2.jar,

    解压后 ODTwithODAC112030stageComponentsoracle.rdbms.rsf.ic11.2.0.3.01DataFilesfilegroup2in

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

    第四个路径:ODTwithODAC112030stageComponentsoracle.rdbms.rsf.ic11.2.0.3.01DataFiles  找到  filegroup3.jar 文件,

    用winrar解压 filegroup3.jar,

    解压后 ODTwithODAC112030stageComponentsoracle.rdbms.rsf.ic11.2.0.3.01DataFilesfilegroup3in

    目录中找到 oraocci11.dll

    第五个路径:ODTwithODAC112030stageComponentsoracle.rdbms.ic11.2.0.3.01DataFiles 找到  filegroup4.jar 文件,

    用winrar解压 filegroup4.jar,

    解压后 ODTwithODAC112030stageComponentsoracle.rdbms.ic11.2.0.3.01DataFilesfilegroup4instantclientlight

    目录中找到 oraociicus11.dll

    第六个路径:ODTwithODAC112030stageComponentsoracle.ldap.rsf.ic11.2.0.3.01DataFiles 找到  filegroup1.jar 文件,

    用winrar解压 filegroup1.jar,

    解压后 ODTwithODAC112030stageComponentsoracle.ldap.rsf.ic11.2.0.3.01DataFilesfilegroup1in

    目录中找到 orannzsbb11.dll

    如何报下面的错误:

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

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

    第七个路径:ODTwithODAC112030stageComponentsoracle.rdbms.ic11.2.0.3.01DataFiles 找到  filegroup3.jar 文件,

    用winrar解压 filegroup3.jar,

    解压后 ODTwithODAC112030stageComponentsoracle.rdbms.ic11.2.0.3.01DataFilesfilegroup3instantclient

    目录中找到  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 

  • 相关阅读:
    Excel 用row()函数 在Excel中自动添加序号,
    sql server数据导入
    Excel导入sq server后数据列以科学计数法显示
    left join 和 left outer join 的区别
    多点求值与暴力插值
    生成函数

    洲阁筛 学习笔记
    「NOI2017」游戏 解题报告
    CF 1045 H. Self-exploration 解题报告
  • 原文地址:https://www.cnblogs.com/wolfplan/p/5341595.html
Copyright © 2020-2023  润新知