国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 16:45:35
字體:
來源:轉載
供稿:網友

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

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

(1) DataPRovider 泛型類

public class DataProvider<ConnType, CmdType>
    where ConnType : IDbConnection, new()
    where CmdType : IDbCommand,new ()
{
   
}
    提供數據庫表的Insert,Update,Select,Delete操作。
    因為 IDbCommand能夠由 IDbConnection 獲取,其實只需要有一個泛型參數ConnType 的,不過這樣以來,具體的代碼改動比較大,偶就采用了兩個泛型參數。

(2)ConnectionPool 泛型類

public class ConnectionPool<T>
        where T : IDbConnection,new ()
{
   
}

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

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

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

using DataProvider = DataProvider<MySql.Data.MySqlClient.MySqlConnection, MySql.Data.MySqlClient.MySqlCommand>;
(2)如果使用 SQLServer 數據庫:

using DataProvider = DataProvider<System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand>;
    這樣一來,其它地方的代碼一句都不用動了。

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

#if MSSQLSERVER
using System.Data.SqlClient;
using DataProvider = DataProvider<System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand>;
#elif MYSQL
using MySql.Data;
using DataProvider = DataProvider<MySql.Data.MySqlClient.MySqlConnection, MySql.Data.MySqlClient.MySqlCommand>;
#endif
    這樣在編譯時指定條件編譯符號 " MYSQL " 得到的就是MySql版本的代碼,指定條件編譯符號" MSSQLSERVER ",得到的就是 SQLServer 版本的代碼。

    其它:

    (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

http://m.survivalescaperooms.com/xiaotie/archive/2007/01/02/610121.html


上一篇:C#編寫發送電子郵件

下一篇:C#連接mysql

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广东省| 枣庄市| 泽普县| 宁阳县| 福海县| 湟中县| 威海市| 黔西| 肇庆市| 林西县| 遂昌县| 普兰店市| 禹城市| 上杭县| 石楼县| 札达县| 自治县| 沂源县| 得荣县| 库伦旗| 海伦市| 双柏县| 保山市| 如东县| 池州市| 璧山县| 梁河县| 绿春县| 海盐县| 财经| 石渠县| 长沙县| 杭锦后旗| 通渭县| 平舆县| 刚察县| 余庆县| 三原县| 呼图壁县| 连南| 福泉市|