熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

接口在ADO.NET中的應用

2013-11-13 10:26:33  來源: .NET編程 

  當我們在連接MSSQLSEVER的時候一般都是  SqlConnection con = new SqlConnection(ConStr);這樣的格式格式來創建連接字符串的這是時候我們我們似乎感覺他很方便但是突然那一天你的老板給你給一個Oracle的備份數據庫你是不是還要 OracleConnection con= new OracleConnection(conStr);又突然老板突發奇想覺得數據量也不大而且ACCESS還蠻潮流的你給我換成ACCESS要我哪裡都可以直接打開你是否又要OleDbConnection conn = new OleDbConnection(conStr);剛做好了突然老板說客戶需要DB這孩子終於按耐不住了這不是折騰人麼#·¥%&¥……

  於是乎他就想了想NET的思想就是提供統一的規范化來管理一切對象那麼我們就來追蹤一下本源從源頭上來解決問題

  他就開始這樣查看

  \

  他發現IDbConnection接口已經提供了我們通常所需要的基本的方法
   
    看到這裡他想到了利用類型轉化(將一個接口變量指向實現接口的類的一個實例當然這個也可以書面的第一位隱式轉化的部分內容)


   
    那麼我還需要這樣
   
    OleDbConnection Code
   
    // Assumes connectionString is a valid connection string
   
    using (OleDbConnection connection =
   
       new OleDbConnection(connectionString))
   
    {
   
         connectionOpen()
   
         // Do work here
   
    }
   
    或者
   
    OdbcConnection Code
   
    // Assumes connectionString is a valid connection string
   
    using (OdbcConnection connection =
   
       new OdbcConnection(connectionString))
   
    {
   
         connectionOpen()
   
         // Do work here
   
    }
   
    或者
   
    OracleConnection Code
   
    // Assumes connectionString is a valid connection string
   
   
   
    using (OracleConnection connection =
   
   
   
       new OracleConnection(connectionString))
   
   
   
    {
   
   
   
         connectionOpen()
   
   
   
         // Do work here
   
   
   
    }
   
   
   
    OracleConnection nwindConn = new OracleConnection(Data Source=MyOracleServer;Integrated Security=yes;
   
   
   
    nwindConnOpen()
   
    事實證明完全可以省略這些繁瑣的步驟
   
    我們現在只需要這樣
   
    IDbConnection conn= new OracleConnection(conStr)
   
    IDbConnection conn= new new OleDbConnection(conStr)
   
    IDbConnection conn= new SqlConnection(ConStr)
   
    是不是感覺依舊繁瑣呢因為先還沒有直觀的展示給大家現在我們就上代碼來展示下他的優點
   
    using System;
   
    using SystemConfiguration;
   
    using SystemDataOleDb;
   
    using SystemData;
   
    using SystemDataSqlClient;
   
    using SystemDataOracleClient;
   
   
   
    namespace IFADO
   
   
   
    {
   
         class Program
   
         {
   
             static void Main(string[] args)
   
             {
   
                 string conStr = ConfigurationManagerConnectionStrings[conStr]ConnectionString;
   
                 string privider = ConfigurationManagerConnectionStrings[conStr]ProviderName;
   
                 IDbConnection conn;
   
                 switch (privider)
   
                 {
   
                     case Access: conn = new OleDbConnection(conStr) break;
   
   
   
                     case SQLSever: conn = new SqlConnection(conStr) break;
   
   
   
                     case Oracle: conn = new OracleConnection(conStr) break;
   
   
   
                     default: throw new Exception(未找到合適的數據庫請擴展!)
   
                 }
   
               using(conn)
   
   
   
               {
   
                     connOpen()
   
                     using (IDbCommand cmd = connCreateCommand())
   
                     {
   
                         cmdCommandText = SELECT * FROM Test_TableORDER BY Test_TableID DESC;
   
   
   
                         cmdExecuteNonQuery()
   
                     }
   
                     ConsoleWriteLine(完成查詢!
   
   
   
                     ConsoleReadKey()
   
                 }
   
             }
   
         }
   
    }
   
    此時我們操心的只有配置文件中的ProviderName節點的值了但是我們可以放心的擴展數據庫而不用擔心他是否會正常執行


From:http://tw.wingwit.com/Article/program/net/201311/13630.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.