MySQL數(shù)據(jù)庫(kù)與PostgreSQL的DAAB
以下的文章主要介紹的是MySQL數(shù)據(jù)庫(kù)與PostgreSQL的DAAB ,提及MySQL數(shù)據(jù)庫(kù)都是我們大家耳熟能詳?shù)?,那么PostgreSQL的DAAB 是不是有點(diǎn)陌生?以下的文章就有對(duì)PostgreSQL的DAAB與MySQL的介紹。
最近在研究EntLib2.0的DAAB。DAAB的特性之一是可以使我們?cè)诰帉?xiě)代碼的時(shí)候不必關(guān)心數(shù)據(jù)庫(kù)到底是什么,也就是DAAB可以當(dāng)作數(shù)據(jù)庫(kù)抽象層。但是你得有你要使用的數(shù)據(jù)庫(kù)在這個(gè)抽象層之下的驅(qū)動(dòng)。
我們知道現(xiàn)在開(kāi)源關(guān)系數(shù)據(jù)庫(kù)主要有兩個(gè),一個(gè)是MySQL,一個(gè)是PostgreSQL。這兩個(gè)數(shù)據(jù)庫(kù)現(xiàn)在都有現(xiàn)成的開(kāi)源.NET Data Provider。由于微軟也提供了EntLib2.0的源代碼,這樣我們很容易仿照其SQL Server的DAAB Database Provider寫(xiě)出他們?cè)诔橄髮又碌尿?qū)動(dòng)。我試著寫(xiě)了一下,MySQL數(shù)據(jù)庫(kù)的部分實(shí)現(xiàn)了,PostgreSQL的完全沒(méi)有實(shí)現(xiàn)。
MySQL的DAAB Database Provider除了XmlReader相關(guān)的部分,其他部分都實(shí)現(xiàn)了。這是由于MySQL的.net connecter雖然是仿照SQLServer的.NET Database Provider來(lái)定義的接口,但是.NET Framework 2.0新增的一些內(nèi)容還沒(méi)有實(shí)現(xiàn),MySQL對(duì)于XML的支持也不如SQL Server那么完善。
PostgreSQL的DAAB Database Provider完全沒(méi)有實(shí)現(xiàn)。和MySQL數(shù)據(jù)庫(kù)的.NET Database Provider類似,PostgreSQL的Npgsql也沒(méi)實(shí)現(xiàn)XmlRaeder的功能,除此以外,Npgsql的NpgsqlCommand對(duì)象竟然沒(méi)有繼承DbCommand, ICloneable,導(dǎo)致在一些NpgsqlCommand強(qiáng)制轉(zhuǎn)換的情景下會(huì)失敗。這個(gè)情況導(dǎo)致了PostgreSQL的DAAB Database Provider沒(méi)辦法實(shí)現(xiàn)。
比較MySQL和PostgreSQL對(duì).NET的支持,看來(lái)是MySQL更勝一籌。
為了解決使用Entlib的DAAB來(lái)訪問(wèn)PostgreSQL的問(wèn)題,估計(jì)可能得寫(xiě)一個(gè)ODBC的DAAB Database Provider了。研究了一下ODBC的.NET Database Provider的情況,似乎ODBC和MySQL數(shù)據(jù)庫(kù)的情況類似,在.NET Framework2.0的類庫(kù)里面并沒(méi)有對(duì)XmlReader支持,估計(jì)仍然不能實(shí)現(xiàn)ODBC的DAAB Database Provider的XmlReader部分。
以上的相關(guān)內(nèi)容就是對(duì)MySQL數(shù)據(jù)庫(kù)和PostgreSQL的DAAB 的介紹,望你能有所收獲。
【編輯推薦】
- 安裝MySQL在linux as3之下
- MySQL連接字符串中的幾個(gè)重要步驟
- MySQL連接字符串的經(jīng)驗(yàn)總結(jié)
- MySQL update 語(yǔ)句的正確用法
- 實(shí)現(xiàn)MySQL分頁(yè)用LIMIT函數(shù)