1. 程式人生 > >windows下 C++連線SQL Server 到底用什麼驅動?

windows下 C++連線SQL Server 到底用什麼驅動?

亂說幾句。我現在認為,寫部落格不要怕錯,錯誤肯定是有的,一個人的水平不高的情況下,就像我,肯定會有錯誤的地方。但是你不寫出來,就不錯了麼?所以寫出來,不要怕,可能對別人有點幫助,也可能別人幫助你指出錯誤,大體意思到了,就可以了。態度要認真,總結一下,記一下,也算是個生命過程的記錄。

windows下連線SQL Server的方法有很多,Java有JDBC,我一直挺喜歡用的。.net平臺也可以使用ado.net,也是比較易用的,我前些年用過,現在沒有太多印象了,好像也挺好用的樣子。嚴格的說,也可以使用託管C++,利用ado.net連線資料庫,但是我現在不能用託管C++,話說要是我用託管C++的話,為什麼不直接使用C#嘞,很難學習麼?

我常寫的程式,就是用原生C++在windows下工作,一般都是服務程式。我儘量不用MFC,因為前幾年用MFC用吐了,再也不想受MFC框架的限制。那麼MFC封閉的連線資料庫的東西,我也不用了。如果不用介面,就用不到QT,也就用不到QT對ODBC的封裝了。

微軟平臺下連線SQL Server,講來講去,本質上就兩種連線資料的驅動,ODBC和OLEDB。ODBC出現的早點,OLEDB出現的晚點。大概在 1996 年,微軟整天嚎著讓大家從ODBC轉到 OLE DB。 1999 年 7 月發行的《MSDN 雜誌》中有一篇Don Box 的專欄文章,在這篇文章中,他描述了導致 OLE DB 誕生的動機與靈感。OLE DB

要比 ODBC 複雜很多,但它的可擴充套件性確實也高很多。名稱 OLE DB 之所以具有誤導性,是因為它與 OLE 沒有任何聯絡,並且它也不是專門用於資料庫。它實際上是作為適用於所有資料的一種通用資料訪問模型而設計的,可用於關係資料或其他資料,如文字、XML、資料庫、搜尋引擎等等。OLE DB 首次亮相時,COM 正在 Windows 平臺上風行一時,其偏重於 COM 的 API 以及天然的可擴充套件性吸引了眾多開發者。但是,作為一種關係資料庫 API,它從未完全達到 ODBC 的原始效能。

在 2011 年 8 月,OLE DB 的最強有力支持者 SQL Server 團隊令人震驚地宣佈:“Microsoft 正在調整 ODBC 以實現本機關係資料訪問”。他們宣佈,市場正在離開 OLE DB,朝著 ODBC 方向轉移。

好吧,我們又會回到 ODBC

我的意思,就是現在大家還都是在玩ODBC,沒辦法。目前有不少封裝ODBC的開源類,可以下載使用,碰到小問題是經常的。我現在使用tiodcb,比較簡單的一個封裝,對我來講夠了。高手自己可以封裝,我對ODBC的原始API是感覺相當惱火的。