• C# 连接Oracle ,免安装客户端


    在.NET平台下开发Oracle应用的小伙伴们肯定都知道一方面做Oracle开发和实施相比SqlServer要安装Oracle客户端(XCopy、自己提取相关文件也有一定复杂性),另一方面相比JAVA平台不如JDBC方便快捷,特别是一些刚接触Oracle的小伙伴,面临配置tns.ora、OraHome等等多少有些畏难情绪。

    初始庐山

      现在,这一切都即将成为过去啦。继早些时候Oracle官方推出的ODP.NET Managed的Beta版之后,最近的版本已经跟随12c一起发布了,可以  DLL http://pan.baidu.com/s/1boDID4N  下载。对应的粗看一下,下载了64bit的版本,下载完成后文件不多。

    牛刀小试

      VS新建一个项目,引用Oracle.ManagedDataAccess.dll,开始随意码几行烂熟的入门级代码…,可以看到,正如Orale自己描述的,跟以前的API差别很小,所不同的就是命名空间换成了using Oracle.ManagedDataAccess.Client;

    OracleConnection con = new OracleConnection();
    con.ConnectionString ="user id=scott;password=tiger;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))";
     con.Open();
    OracleCommand cmd = new OracleCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "select * from gy_yonghuxx";
    cmd.Connection = con;
    OracleDataAdapter da = new OracleDataAdapter();
    da.SelectCommand = cmd;
    DataSet ds = new DataSet();
    da.Fill(ds);
    con.Close();
    da.Dispose();
    cmd.Dispose();
    con.Dispose();

    Entity Framework重构

       对于已经开始或准备使用Entity Framework的项目(目前版本还不支持Code First),如果熟悉ADO.NET替换起来其实也很简单,共有三点需要注意
     1、配置文件里的连接字符串中provider=Oracle.DataAccess.Client;替换为provider=Oracle.ManagedDataAccess.Client;provider
     2、对应实体文件edmx中的Provider="Oracle.DataAccess.Client"也替换为Provider="Oracle.ManagedDataAccess.Client"
     3、如果对数据类型映射做过配置(Oracle默认的类型映射有点坑爹),需要将下图红线下面的加上去
    image 

    一探究竟

        性能测试我想正式版发布前Oracle官方肯定做过的,自己做测试对比毕竟不够专业,但粗略看下内部实现多少能看出端倪的,如果看过以前Oracle驱动的dll(Mircrosoft、Oracle、Devert提供的dll)肯定知道以前都是依赖于oci.dll这个接口,调用的最终实现是通过PInvoke。下图是顺着OracleConnect.Open最后跟踪到的OracleCommunication的类,在此已经出现了soket、socketStream等对象,可见这次的托管版本托管的还是比较彻底的,个人觉得在性能上应该会比PInvoke来的高效。

    image

  • 相关阅读:
    Python之迭代器,生成器
    Python函数--装饰器进阶
    Python之函数的本质、闭包、装饰器
    Python之函数--命名空间、作用域、global、nonlocal、函数的嵌套和作用域链
    Python函数的定义与调用、返回值、参数
    Python之文件操作
    Python之集合
    基本数据类型补充,深浅copy
    Python基础-元组、列表、字典
    Python常用模块(一)
  • 原文地址:https://www.cnblogs.com/wangcongxing/p/6203767.html
Copyright © 2020-2023  润新知