SOCI、LiteSQL、POCO數據庫訪問類庫對比
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
最近在做視頻的開發,其中視頻的設備接入管理服務器、流媒體管理服務器、中心服務器都涉及到了數據庫的操作,同時需要兼容大多數版本的數據庫,包括mysql、sqlite、oracle。公司原來使用的是ado來進行數據庫的開發的, 但是考慮到目前需要兼容linux,目前使用Poco框架封裝的數據庫模塊進行開發。
根據項目情況我對soci、litesql、poco這三個框架進行了簡單的學習來確定選擇那個框架。
1.soci
soci是c++數據庫訪問類庫,目前支持MySQL、Oracle、PostgreSQL、SQLite、MS SQL、FireBird。
soci github:https://github.com/SOCI/soci
soci Website:http://soci.sourceforge.net
soci是一個需要自己下載源碼后編譯的庫,編譯方法可以參看源碼中的doc文件夾下的installation.html文件。編譯注意事項可以參看博客http://blog.csdn.net/fengshuiyue/article/details/22164159
下圖是installation中截取的一部分編譯的內容:
2.litesql
liteSQL是一個C++數據庫持久層框架,支持SQLite3、MySQL、PostgreSQL;
litesql是一個C++的ORM(對象關系映射)操作數據庫的框架
litesql website:http://sourceforge.net/apps/trac/litesql/
注:litesql與soci對比
a.
litesql是一個ORM框架。使用上一般是根據給定格式將數據庫信息寫入xml中,在用litesql提供的工具生成.cpp、.h文件。
soci是用泛型算法為sql訪問做了一層封裝。需要通過寫sql語句來完成數據庫操作。
b.
litesql不支持access、sqlserver的,soci支持odbc,所以soci支持ms下的相關的一系列東西。
c.
litesql需要學習成本,同時對于初學者來說不太方便調試
根據項目情況,我起初選擇了soci,但是soci相關的文檔極少,不同版本的soci估計生成動態鏈接庫的方式不太一致,生成動態鏈接庫不是很方便,故放棄了soci
3.Poco
其實Poco是一個C++庫,類似Boost,但是比Boost封裝更完善,在這塊兒介紹Poco,是因為最終選定的方案是采用Poco中的數據庫操作訪問類庫(SQLite、Mysql、ODBC)來進行數據庫的開發。
Poco的數據庫訪問類庫參照的是soci,但是比Soci有更多的文檔去學習,同時生成各種版本的lib文件很簡單。
Poco website:http://www.libpoco.com/
Poco文檔:http://www.libpoco.com/site/info/
下圖是Poco庫的概覽圖,我們操作數據庫使用的是下圖紅框中的Data接口以及MySQL、SQLite、ODBC的模塊進行開發。
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成