一,簡介html
ODB是應用於C++的一個開源、跨平臺、跨數據庫的對象關係映射(ORM)系統。sql
它可讓你持久化C++對象到關係數據庫,而沒必要處理表、列或者SQL,無需手動編寫任何映射代碼。數據庫
ODB支持MySQL,SQLite,PostgreSQL,Oracle和微軟SQL Server關係數據庫以及C ++98/03和C ++11語言標準。windows
它還配備了用於Boost和Qt可選的配置文件,讓你能夠無縫地使用這些庫持久化C++類的值類型、容器和智能指針。緩存
它有易用性,簡潔的代碼,安全,數據庫可移植性,優良的性能,可維護性等優勢。安全
總之它具備完善的學習文檔的很是棒的C++的ORM框架。框架
能夠去官網查看更多:http://www.codesynthesis.com/products/odb/性能
二,準備工做學習
以sqlite爲例,在windows平臺,用VS2013來搭建開發環境。google
1,下載安裝包
2,下載ODB核心庫
3,下載數據庫運行庫
4,下載例子程序
5,下載sqlite的源文件(用sqlite因此須要)
地址:http://www.codesynthesis.com/products/odb/download.xhtml
因爲是windows平臺,sqlite數據庫,用的如下文件。(別的平臺,別的數據庫下載相應該的庫文件)
odb-2.3.0-i686-windows(ODB的編譯器,就是所對象成對sql和頭文件,用於持久化相關)
libodb-2.3.0(ODB的核心庫,編譯出來的odb_d.lib(Debug版本)在examples中須要)
libodb-sqlite-2.3.0(odb操做sqlite的相關功能,編譯出來的odb-sqlite-d.lib(Debug版本)在examples中須要)
odb-examples-2.3.0 (odb的例子和演示)
三,安裝ODB
安裝很簡單。
1,解壓odb-2.3.0-i686-windows,
2,把bin目錄加到環境變量中
3,命令行輸入odb --version看是否安裝成功
詳細的能夠看README裏面寫的。
如現以下提示,能夠就說安裝成功了
四,編譯ODB核心庫,ODB的sqlite庫,sqlite庫
如下都是說的debug版本。
1,編譯ODB核心庫,生成odb-d.lib和odb-d-2.3-vc11.dll
2,編譯sqlite庫,生成sqlite.lib
3,編譯ODB的sqlite庫,生成odb-sqlite-d.lib和odb-sqlite-d-2.3-vc11.dll
解壓libodb-2.3.0,後會看見vs2008-2011的工程文件,真接用VS打開就OK,而後把下面路徑加到VC的目錄中。
Include: ...\libodb
Library: ...\libodb\lib
Executable: ...\libodb\bin
而後編譯,會在lib目錄下生成odb-d.lib,在bin目錄下生成odb-d-2.3-vc11.dll。
用sqlite編譯出,生成sqlite.lib,直接能夠參考官網。
須要注意的是,在編譯的時候須要把SQLITE_ENABLE_UNLOCK_NOTIFY宏加上,若是不加上,那就要在libodb-sqlite-2.3.0工程中去掉LIBODB_SQLITE_HAVE_UNLOCK_NOTIFY宏。
解壓libodb-sqlite-2.3.0,一樣打開vs的工程文件。把vc目錄添加到到工程中。
Include: ...\libodb-sqlite
Library: ...\libodb-sqlite\lib
Executable: ...\libodb-sqlite\bin
要把odb-d.lib所在目錄加到Library中,把odb-d-2.3-vc11.dll加到Executable中。
還要把sqlite的頭文件因此在的目錄放到 Include中,把sqlite.lib所在目錄加到Library中。
而後編譯,會在lib目錄下生成odb-sqlite-d.lib,在bin目錄下生成odb-sqlite-d-2.3-vc11.dll。
五,運行例子程序
前期的工做已經作好了,直接解壓,用vs的打開。
我先進的是Hello程序。
1,用ODB編譯器生成,persion.hxx,和person-odb.ixx文件。
方法是: 在該目錄下輸入odb -d sqlite --generate-query --generate-schema person.hxx
詳見:http://www.codesynthesis.com/products/odb/doc/odb.xhtml
2,把核心庫頭文件,libodb-sqlite的頭文件及sqlite的頭文件目錄加到VC的Include中。
3,把sqlite.lib,odb-sqlite-d.lib,odb-d.lib的目錄均加到VC的Libary中。
而後編譯運行。出現
說明搭建成功。
總結:
1,ODB也是才接觸,當時走了不了彎路,緣由就是求成心切,不看文檔,下了程序包就開搞了,結果可想而知。勿在浮沙築高臺。
2,編譯時當時爲一個錯誤盲目google很久,最後發現本身output都沒看,直接看error面板去了。
插曲:當時odb才安裝好,在本身打開的cmd命令中odb是OK的,但在批處理中寫的odb系統卻找不到odb。致使vs中講運例子出現錯誤。(vs中要調用odb修改相關文件),但vs報的是鏈接錯誤,cmd.exe 的9009錯誤。沒看output,直接google去了。後來發現是找不到odb,半天也沒解決。後來重起以後解決了。環境變量有必定的緩存?
3,多看看文檔,官網上的操做寫得很詳細,並且每一個包下,都有readme和insall文檔,都對如何運行有詳細的描述,按上面的來通常是沒什麼問題。這個項目考慮也很周全,2008到2011的工程都給出了。