lib-odb mysql_test-me-odb
ODB是應用于C++的一個開源、跨平臺、跨數據庫的對象關系映射(ORM)系統。
它可以讓你持久化C++對象到關系數據庫,而不必處理表、列或者SQL,無需手動編寫任何映射代碼。
ODB支持MySQL,SQLite,PostgreSQL,Oracle和微軟SQL Server關系數據庫以及C ++98/03和C ++11語言標準。
它還配備了用于Boost和Qt可選的配置文件,讓你可以無縫地使用這些庫持久化C++類的值類型、容器和智能指針。
它有易用性,簡潔的代碼,安全,數據庫可移植性,優良的性能,可維護性等優點。
總之它具有完善的學習文檔的非常棒的C++的ORM框架。
基本代碼結構
1.根據person.hxx 生成下列文件:
person-odb.hxx
person-odb.ixx
person-odb.cxx
person.sql
使用命名:odb -d --generate-query --generate-schema person.hxx
是數據類型如:mysql
如:odb -d mysql --generate-query --generate-schema person.hxx
2.在連接的數據庫中執行sql文件,創建表
3.修改數據庫配置:
//用戶名、密碼、數據庫名稱等默認是運行時,數據連接參數
auto_ptr db (new odb::mysql::database ("root", "201314", "odb"));
4.執行driver.cxx的main函數
注意:
1.odb命名是使用 apt install odb 安裝
2.安裝的開發庫:
libodb-2.4/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-boost-2.4/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-boost-dev/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-dev/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-mysql-2.4/lion,now 2.4.0-3 amd64 [已安裝,自動]
libodb-mysql-dev/lion,now 2.4.0-3 amd64 [已安裝]
libodb-pgsql-2.4/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-pgsql-dev/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-qt-2.4/lion,now 2.4.0-2+b1 amd64 [已安裝,自動]
libodb-qt-dev/lion,now 2.4.0-2+b1 amd64 [已安裝,自動]
libodb-sqlite-2.4/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
libodb-sqlite-dev/lion,now 2.4.0-1+b1 amd64 [已安裝,自動]
odb/lion,now 2.4.0-5+b1 amd64 [已安裝]
3.案例運行兩次可能會出錯。
odb命名:
-I Add to the beginning of the list of
directories to be searched for included header
files.
將添加到要搜索包含頭文件的目錄列表的開頭。
--database|-d Generate code for the database.
為數據庫生成代碼。
--generate-query|-q Generate query support code
生成查詢支持代碼
--generate-prepared Generate prepared query execution support code.
生成準備好的查詢執行支持代碼。
--generate-session|-e Generate session support code.
生成會話支持代碼。
--generate-schema|-s Generate the database schema.
生成數據庫架構。
--generate-schema-only Generate only the database schema.
僅生成數據庫架構。
--generate-prepared
--omit-unprepared
--profile|-p Specify a profile that should be used during
compilation.
指定編譯期間應使用的配置文件。
--std Specify the C++ standard that should be used
during compilation.
問題一:
odb -d mysql --profile qt --generate-schema --generate-query --generate-session employee.hxx 無法編譯
錯誤:
In file included from :1:0:
/usr/include/odb/qt/basic/mysql/default-mapping.hxx:8:26: fatal error: QtCore/QString: 沒有那個文件或目錄
#include
^
compilation terminated.
修改命名:
odb --database sqlite --profile qt --generate-schema --generate-query --generate-session -I/media/zlf/_dde_data/Qt5.12.3/5.12.3/gcc_64/include employee.hxx
Qt頭文件編譯錯誤
加入 --std c++11
Qt編譯錯誤 -DQT_BOOTSTRAPPED
最終執行命名
odb -I /usr/include/x86_64-linux-gnu/qt5 --std c++11 -DQT_BOOTSTRAPPED -d mysql --profile qt --generate-schema --generate-query --generate-session employee.hxx
問題二:
在進行查詢時條件過濾(分頁)時, 生成sql異常
修改代碼后正常:
typedef odb::query query;
typedef odb::result result;
//有條件,將所有數據排序.也可以進行分頁
query b(query::type == 1);
result r(db->query(query(b) + " ORDER BY" + query::id + "desc", true));
總結
以上是生活随笔為你收集整理的lib-odb mysql_test-me-odb的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: es获取最大时间的记录_荣耀手表ES值得
- 下一篇: STEP文件格式(*.step, *.s