採用C 泛型實現資料庫之間的切換

2021-09-05 15:45:07 字數 2340 閱讀 4750

最近做的乙個專案,我最開始選用的是 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資料庫,我經常一會在這台電腦上幹活,一會在另外一台電腦上幹活,兩個電腦上的**應該一致啊。因此,採用預編譯指令:

#ifmssqlserver

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

採用C 泛型實現資料庫之間的切換

最近做的乙個專案,我最開始選用的是 mysql 5.0 資料庫,專案提交之後,對方要求換成 ms sqlserver 2000,還好資料層操作基本採用的是標準的sql語句,也未使用儲存過程,於是將原有的資料接入層 改寫成泛型類,只改了不到一百行 具體的sql操作語句一句未動,便實現了資料庫之間的切換...

採用C 泛型實現資料庫之間的切換

最近做的乙個專案,我最開始選用的是 mysql 5.0 資料庫,專案提交之後,對方要求換成 ms sqlserver 2000,還好資料層操作基本採用的是標準的sql語句,也未使用儲存過程,於是將原有的資料接入層 改寫成泛型類,只改了不到一百行 具體的sql操作語句一句未動,便實現了資料庫之間的切換...

mysql的泛型 資料庫泛型

資料庫泛型就是資料庫應該遵守的規則.資料庫泛型也稱為資料庫正規化.目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf 第四正規化 4nf 和第五正規化 5nf,又稱完美正規化 滿足最低要求的正規化是第一正規化 1nf 在第一正規化的基...