• 代码重构的疑惑


    以前是用GotDotNet.ApplicationBlocks.Data  3.0版的访问类 以OleDb方式访问Oracle 817的.很好。
     
    但是在连Oracle 816时不稳定的一塌糊涂。所以打算用OracleClient来访问。重构代码。
     
    不过在重构时有两种方法。自己有点拿不定主意。
     
    以下是以前的封装函数。
     
    当时直接返回IDataReader类型的Reader.
     
    static public IDataReader ComFun_ExeReader(string Sql)
      {
       AdoHelper helper = GetAdoHelper("OleDb");
       IDataReader myreader=helper.ExecuteReader(GetConnectionString("OleDb"),CommandType.Text,Sql);
       return myreader;
      }
     
    重构方法1:
    生成一个OracleDataReader ,然后强制类型转化成IDataReader。这样以前一行代码都不用动就可以。但是不知类型转化上会不会出问题。粗粗试了一下好像可以。代码也能通。
     
     IDataReader ComFun_ExeReader(string Sql)
      {
       OracleConnection Conn=new OracleConnection("....");
       OracleCommand Cmd=new OracleCommand();
       Cmd.CommandText=Sql;
       Cmd.Connection=Conn;
       Conn.Open();
       OracleDataReader Reader= Cmd.ExecuteReader(CommandBehavior.CloseConnection);
       return (IDataReader)Reader;
      }
        但是如果可以这样easy的把OracleDataReader 转成IDataReader 的话。
        为什么大家在写代码时都大量的用与数据库相关的Reader,把自己的程序写的绑死到专用数据库上,弄的以后数据库转型都不好转。比如OracleDataReader ,还有mssqlserver的专用DataReader呢
        难到只是为了性能。????????????????。狂想不通呀。总不会说大家没想到这一点吧。:(不然为什么大家又要用专用的reader.
     
    重构方法2:
     
       就是直接返回OracleDataReader 。然后把所有用到封装函数的地方
    比如  IDataReader Reader=ComFun_ExeReader("select person_id,Person_name from person");
    转成  OracleDataReader Reader=ComFun_ExeReader("select person_id,Person_name from person");
    不过这样的工作量实在是大的要疯掉为止。
    要改动的代码行目前算了一下可能有252个cs要改。一共856个文件。
    就是用IDE的替换功能,也会把我吓得开始怀疑代码是否可以安全编译通过。
  • 相关阅读:
    LeetCode5 Longest Palindromic Substring
    LeetCode4 Median of Two Sorted Arrays
    LeetCode3 Longest Substring Without Repeating Characters
    LeetCode2 Add Two Numbers
    LeetCode1 Two Sum
    算法总结—深度优先搜索DFS
    c++ 设计模式9 (Abstract Factory 抽象工厂模式)
    题解 P3374 【【模板】树状数组 1】
    题解 HDU1565 【方格取数(1)】
    题解 P2431 【正妹吃月饼】
  • 原文地址:https://www.cnblogs.com/tongzhenhua/p/13612.html
Copyright © 2020-2023  润新知