C 連線主流資料庫經驗總結

2021-09-26 09:58:12 字數 2039 閱讀 1163

在實際開發中,我們經常需要對資料庫進行訪問,針對不同型別的資料庫(如mysql、sqlite、access、excel等),如果採用不同的方法進行連線,會把我們搞崩潰。如果能夠採用統一的方式對資料庫進行訪問,在開發過程中就會變得方便和簡單。

sqlapi++語法很簡單,只要你會c++都能看懂,上手很快。下面介紹用它訪問mysql:

saconnection con; 

sacommand cmd;

try}

catch(saexception &x)

saconnection con; 

sacommand cmd;

try}

catch(saexception &x)

你應該發現了,連線兩種資料庫都只用乙個地方改變,那就是connect的第四個引數,使用的驅動不同,其他都一樣,可以看出sqlapi++封裝的很好,這也正是我推薦的原因。 

那麼問題來了,它可以訪問主流的資料庫,那如果要訪問access怎麼辦?官網好像沒說支援access資料庫,如果要訪問excel檔案,我們又該怎麼辦?

雖然sqlapi++不支援access、excel,但是我們檢視它的官方文件會發現,它支援odbc。介紹一下odbc:

odbc是「開放資料庫互連」(open database connectivity)的簡稱。odbc是microsoft公司提出的應用程式通用程式設計介面標準,用於對資料庫的訪問。

odbc實際上是乙個資料庫訪問函式庫,使應用程式可以直接操縱資料庫中的資料。odbc是基於sql語言的,是一種在sql和應用介面之間的標準介面,它解決了嵌入式sql介面非規範核心,免除了應用軟體隨資料庫的改變而改變的麻煩。odbc的乙個顯著優點是,用它生成的程式是與資料庫或資料庫引擎無關的,為資料庫使用者和開發人員遮蔽了異構環境的複雜性,提供了資料庫訪問的統一介面,為應用程式實現與平台的無關性和可移植性提供了基礎,因而odbc獲得了廣泛的支援和應用。

說了那麼多官方的話,其實odbc就是一座橋,橋對面是各種資料庫,資料通過這座橋才來傳出來,雖然sqlapi++不能過橋去接人(access、excel等資料庫),但是我在橋口(odbc)接總沒有影響吧!也就是說,odbc提供了乙個資料介面,資料要出來就要通過這個介面,sqlapi++就可以去這個介面取資料,下面介紹sqlapi++連線access和excel,嚴格來說,它是連線odbc。

但是,連線odbc之前,我們需要先配置odbc資料來源,也就是得先把橋搭好,不然我們取不到資料,配置odbc資料來源可以手動配置,也可以自動配置,具體可參考我之前的部落格。

橋(odbc資料來源)搭好之後,我們(sqlapi++)就可以去橋那裡接人了。下面直接上連access**:

saconnection con; 

sacommand cmd;

try}

catch(saexception &x)

仔細看你會發現,沒多少區別,引數1和引數4變了,引數1少了ip,引數4的驅動變成odbc的了,引數二三根據自己配置時是否設定使用者名稱選填。少了ip是因為配置odbc的時候就已經和指定資料庫連上了,我們直接去取odbc資料來源的名字就ok了。

saconnection con; 

sacommand cmd;

try}

catch(saexception &x)

連線excel除了引數1和引數4不同外,仔細看你會發現sql語句也不同,這裡要注意寫法,excel的sql語句有點不同。

到這裡,大家應該基本知道odbc的作用了,那麼有人可能會產生這樣的疑惑,既然odbc可以配置所有資料來源,那sqlapi++開發乙個連odbc的介面就行了,幹嘛還要mysql分mysql,oracle分oracle呢?其實這主要是為了效率問題,我直接就可以去取,幹嘛還要通過橋(odbc)呢?直接用資料庫各自的驅動,比用odbc驅動會快很多,因為odbc屬於間接訪問資料庫,多了一步路。

說到這裡,大家應該知道sqlapi++的強大了吧。但是,sqlapi++對excel只能進行資料的讀取,不能進行資料的寫入,這是因為excel支援的sql語句有限造成的。關於excel資料的寫入,可考慮使用libxl庫。

資料庫的相關經驗總結

sql server select top 10 from testtable where id not in select top 20 id from testtable oracle select from select t.rownum rowid from testtable t wher...

資料庫相關知識以及經驗總結

已停更,轉移至有道雲筆記 mysql 優化之explain你的select show profile,慢查詢 explain select from answer where question id in 4007,4008,4009 and score 0 其中questionid有索引而 sco...

Oracle資料庫優化的經驗總結

個人理解,資料庫效能最關鍵的因素在於io,因為操作記憶體是快速的,但是讀寫磁碟是速度很慢的,優化資料庫最關鍵的問題在於減少磁碟的io,就個 人理解應該分為物理的和邏輯的優化,物理的是指oracle產品本身的一些優化,邏輯優化是指應用程式級別的優化物理優化的一些原則 1 oracle的執行環境 網路,...