但是在连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的替换功能,也会把我吓得开始怀疑代码是否可以安全编译通过。