• 安装使用ODP.Net 问题及说明


       最近使用VS2010时发现System.Data.OracleClient不再受微软支持,而是推荐使用Oracle自己的ODP.Net,于是就踏上了纠结的安装ODP.net的道路

       首先我到oracle的官网注册了账号并下载了ODTwithODAC112021这个版本(http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html),这也成为我纠结的开始.因为网上介绍基本都是基于ODTwithODAC1110720这个版本(http://blog.ywxyn.com/index.php/archives/326),里面提到的一些解压的dll在ODTwithODAC112021相应路径有时找不到对应的dll,所以就很郁闷.本来不准备安装ODTwithODAC112021的(只准备解压获取dll),结果最后还是不得不安装.

        安装后找到了部分dll,如Oracle.DataAccess.dll,oci.dll,ociw32.dll,orannzsbb11,oraocci11.dll 但是死活找不到介绍文章中的oraociicus11.dll 和OraOps11w.dll 两个dll,一度打算卸载ODTwithODAC112021这个版本转而安装ODTwithODAC1110720这个版本,最后将ODTwithODAC112021删除后不小心在

    D:\app\Administrator\product\11.2.0\client_1\bin找到了OraOps11w.dll这个dll(隐藏的太深),然后通过这篇文章(http://www.examw.com/oracle/jishu/135433/)中的oraociei11.dll (也可以用更小的oraociicus11.dll代替) 也算曲线找到了oraociicus11.dll,用oraociei11.dll(D:\app\Administrator\product\11.2.0\client_1)代替,这个dll有100多M.

        结果最后把Oracle.DataAccess.dll引入,并将其它六个dll放在bin目录下还调试成功了,真是苦尽甘来,可喜可贺!

    ORCL:数据库名称

    system:登录名

    password:密码

    HOST=127.0.0.1,目前只知道用127.0.0.1

    PORT=1521:端口也只知道用1521

            string connstring = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
                    (CONNECT_DATA=(SID=ORCL)));User Id=system;Password=sa;";
                using (OracleConnection conn = new OracleConnection(connstring))
                {
                    conn.Open();
                    string sql = "SELECT * FROM cj_demo_crud cdc";
     
     
                    OracleDataAdapter oa = new OracleDataAdapter(sql, conn);
                    DataTable dt = new DataTable();
                    oa.Fill(dt);
                }

    总结:

    一. 还是System.Data.OracleClient配置方便,只要引入就行,ODP.NET还要下载,安装,提取dll,很是麻烦

    二.安装ODTwithODAC会导致pl/sql登录不上(ora-12154),卸载后即可(原因不明)

    三、oci.dll、ociw32.dll、orannzsbb11.dll、oraocci11.dll、oraociei11.dll、OraOps11w.dll还是必须加到bin目录下,目前遇到的问题

         1、绑定变量时报错,无法解析参数(上述六个dll必须放在项目的bin目录下,而不是类库,类库只用引用Oracle.DataAccess.dll即可,假设类库的名称为Demo.ODPNet,

            那么项目中还除了引用Demo.ODPNet外,还必须引用Oracle.DataAccess.dll,否则会报错:类型初始值异常

    四、关于command.BindByName = true;

          默认情况下ODP.Net 绑定变量时,sql语句中的变量顺序必须和变量绑定顺序一致,否则Fill查不到数据,cmd.ExecuteNonQuery()返回0无法执行,

         将BindByName 设为true后,sql变量顺序和绑定顺序即可不一致(以下代码不设置BindByName 则查不出数据)

       DBHelper dbHelper = new DBHelper();
                string sqlstr = "SELECT cc.*,ROWID FROM cde_city cc WHERE cc.provinceid=:provinceid AND cc.cityid=:cityid";
                ParamsHelper parHepler = new ParamsHelper();
                parHepler.Add(":cityid""002");
                parHepler.Add(":provinceid""01");
     
                DataTable dt = dbHelper.GetDataTable(sqlstr, parHepler.ListParameter);


     

     

  • 相关阅读:
    AAC-LC 是什么格式?和 AAC 有什么区别?
    AAC_LC用LATM封装header信息解析 Audio Specific Config格式分析
    AAC的AudioSpecificConfig细节
    AAC帧格式及编码介绍
    AAC 格式分析
    AAC头部格式,RTP打包格式
    RTP 打包H264与AAC
    程序员除了会CRUD之外,还应该知道什么叫CQRS!
    Neo4j数据库学习一:安装和数据类型常用命令简介
    【Neo4j查询优化系列】如何快速统计节点的关系数
  • 原文地址:https://www.cnblogs.com/gossip/p/2265230.html
Copyright © 2020-2023  润新知