您的位置:首页 > 其它

接口在ADO.NET中使用方法

2012-06-20 10:58 405 查看
当我们在连接MSSQLSEVER的时候,一般都是 SqlConnection con = new SqlConnection(ConStr);这样的格式格式来创建连接字符串的,这是时候我们我们似乎感觉他很方便。但是突然那一天你的老板给你给一个Oracle的备份数据库,你是不是还要 OracleConnection con= new OracleConnection(conStr);又突然老板突发奇想,觉得数据量也不大,而且ACCESS2010还蛮潮流的,你给我换成ACCESS要我哪里都可以直接打开,你是否又要OleDbConnection conn = new OleDbConnection(conStr);刚做好了突然老板说客户需要DB2了,这孩子终于按耐不住了,这不是折腾人么#·¥%&¥……

于是乎,他就想了想.NET的思想就是提供统一的规范化来管理一切对象,那么我们就来追踪一下本源,从源头上来解决问题

他发现IDbConnection接口已经提供了我们通常所需要的基本的方法。

看到这里他想到了利用类型转化(将一个接口变量指向实现接口的类的一个实例,当然这个也可以书面的第一位隐式转化的部分内容)

那么我还需要这样:

OleDbConnection Code

1 // Assumes connectionString is a valid connection string.

2 using (OleDbConnection connection =

3 new OleDbConnection(connectionString))

4 {

5 connection.Open();

6 // Do work here.

7 }

或者:

OdbcConnection Code

1 // Assumes connectionString is a valid connection string.

2 using (OdbcConnection connection =

3 new OdbcConnection(connectionString))

4 {

5 connection.Open();

6 // Do work here.

7 }

或者:

OracleConnection Code

1 // Assumes connectionString is a valid connection string.

2

3 using (OracleConnection connection =

4

5 new OracleConnection(connectionString))

6

7 {

8

9 connection.Open();

10

11 // Do work here.

12

13 }

14

15 OracleConnection nwindConn = new OracleConnection("Data Source=MyOracleServer;Integrated Security=yes;");

16

17 nwindConn.Open();

事实证明完全可以省略这些繁琐的步骤。

我们现在只需要这样:

IDbConnection conn= new OracleConnection(conStr);

IDbConnection conn= new new OleDbConnection(conStr);

IDbConnection conn= new SqlConnection(ConStr);

是不是感觉依旧繁琐呢,因为先还没有直观的展示给大家,现在我们就上代码,来展示下他的优点:

1 using System;

2 using System.Configuration;

3 using System.Data.OleDb;

4 using System.Data;

5 using System.Data.SqlClient;

6 using System.Data.OracleClient;

7

8 namespace IFADO

9

10 {

11 class Program

12 {

13 static void Main(string[] args)

14 {

15 string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;

16 string privider = ConfigurationManager.ConnectionStrings["conStr"].ProviderName;

17 IDbConnection conn;

18 switch (privider)

19 {

20 case "Access": conn = new OleDbConnection(conStr); break;

21

22 case "SQLSever": conn = new SqlConnection(conStr); break;

23

24 case "Oracle": conn = new OracleConnection(conStr); break;

25

26 default: throw new Exception("未找到合适的数据库,请扩展!);

27 }

28 using(conn)

29

30 {

31 conn.Open();

32 using (IDbCommand cmd = conn.CreateCommand())

33 {

34 cmd.CommandText = "SELECT * FROM Test_TableORDER BY Test_Table.ID DESC";

35

36 cmd.ExecuteNonQuery();

37 }

38 Console.WriteLine("完成查询!");

39

40 Console.ReadKey();

41 }

42 }

43 }

44 }

此时我们操心的只有配置文件中的ProviderName节点的值了,但是我们可以放心的扩展数据库,而不用担心他是否会正常执行。更多内容http://faniechu.blog.chinaunix.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: