您现在的位置是:首页
>
API是应用程序和谁的接口 接口在ADO.NET中的应用
接口在ADO.NET中的应用 当我们在连接MSSQLSEVER的时候 一般都是 SqlCo ectio co = ew SqlCo ectio Co Str 这样的格式格式来创建连接字符串的 这是
接口在ADO.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)) { connection Open() // Do work here } 或者 OdbcConnection Code // Assumes connectionString is a valid connection string using (OdbcConnection connection = new OdbcConnection(connectionString)) { connection Open() // Do work here } 或者 OracleConnection Code // Assumes connectionString is a valid connection string using (OracleConnection connection = new OracleConnection(connectionString)) { connection Open() // Do work here } OracleConnection nwindConn = new OracleConnection( Data Source=MyOracleServer;Integrated Security=yes; ) nwindConn Open() 事实证明完全可以省略这些繁琐的步骤 我们现在只需要这样 IDbConnection conn= new OracleConnection(conStr) IDbConnection conn= new new OleDbConnection(conStr) IDbConnection conn= new SqlConnection(ConStr) 是不是感觉依旧繁琐呢 因为先还没有直观的展示给大家 现在我们就上代码 来展示下他的优点 using System; using System Configuration; using System Data OleDb; using System Data; using System Data SqlClient; using System Data OracleClient; namespace IFADO { class Program { static void Main(string[] args) { string conStr = ConfigurationManager ConnectionStrings[ conStr ] ConnectionString; string privider = ConfigurationManager ConnectionStrings[ 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) { conn Open() using (IDbCommand cmd = conn CreateCommand()) { cmd CommandText = SELECT * FROM Test_TableORDER BY Test_Table ID DESC ; cmd ExecuteNonQuery() } Console WriteLine( 完成查询! ) Console ReadKey() } } } } 此时我们操心的只有配置文件中的ProviderName节点的值了 但是我们可以放心的扩展数据库 而不用担心他是否会正常执行 lishixinzhi/Article/program/net/201311/13630 很赞哦! (1025)