程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 采用C#泛型實現數據庫之間的切換

采用C#泛型實現數據庫之間的切換

編輯:關於C語言

最近做的一個項目,我最開始選用的是 MySQL 5.0 數據庫(數據庫培訓 數據庫認證 ),項目提交之後,對方要求換成 MS SQLServer 2000,還好數據層操作基本采用的是標准的SQL語句,也未使用存儲過程,於是將原有的數據接入層代碼改寫成泛型類,只改了不到一百行代碼,具體的SQL操作語句一句未動,便實現了數據庫之間的切換。下面簡述:

數據庫不是很復雜,因此我采用了兩個類:

(1) DataProvider 泛型類

public class DataProvider

where ConnType : IDbConnection, new()

where CmdType : IDbCommand,new ()

{

}

提供數據庫表的Insert,Update,Select,Delete操作。

因為 IDbCommand能夠由 IDbConnection 獲取,其實只需要有一個泛型參數ConnType 的,不過這樣以來,具體的代碼改動比較大,偶就采用了兩個泛型參數。

(2)ConnectionPool 泛型類

public class ConnectionPool

where T : IDbConnection,new ()

{

}

最開始沒在MySQL 5.0 中找到對數據庫連接池的支持,於是自己寫了一個簡單的數據庫連接池。

下面,就是采用 C#(C#培訓 ) 的NB語法――using:

(1)如果使用 MySQL 數據庫:

using DataProvider = DataProvider;

(2)如果使用 SQLServer 數據庫:

using DataProvider = DataProvider;

這樣一來,其它地方的代碼一句都不用動了。

懶惰是程序員的美德。我的一台電腦上裝的是 SQLServer 2000數據庫,一台電腦上裝的是 MySQL數據庫,我經常一會在這台電腦上干活,一會在另外一台電腦上干活,兩個電腦上的代碼應該一致啊。因此,采用預編譯指令:

#if MSSQLSERVER

using System.Data.SqlClIEnt;

using DataProvider = DataProvider;

#elif MySQL

using MySQL.Data;

using DataProvider = DataProvider;

#endif

這樣在編譯時指定條件編譯符號 \" MYSQL \" 得到的就是MySQL版本的代碼,指定條件編譯符號\" MSSQLSERVER \",得到的就是 SQLServer 版本的代碼。

其它:

http://www.mscto.com

(1)理論上來說,采用反射得到的解決方案更完美,不過那樣工期會更長,沒必要啦啦啦啦啦啦。。。。。。。。。。。。。

(2)數據庫設計,偶采用的是免費軟件 Toad Data Modeler 免費版,裡面提供了數據庫切換功能,切換過去,稍微改動改動。

(3)這次開發工具采用的全是開源軟件或者免費軟件,都是超級好用的東東,感覺開發速度並不比龐大的收費軟件慢。用到的工具如下:

IDE:VS 2005 Express (C 版,C#版,web開發版),.Net的ASPnet命令行編譯工具

版本管理:SVN,小烏龜SVN ClIEnt

Shell:Windows Power Shell(這玩意既然出來了,就要充分利用)

UML建模:StarUML(功能強大的開源UML,比偶以前用過的JUDE,ArgoUML強大很多,支持C#)

數據庫建模:Toad Data Modeler 免費版

數據庫管理工具:EMS SQL Manager 2005 lite for MySQL

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved