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相关推荐

  1. mysql odb驱动_odb C++访问mysql数据库,从安装到写入

    一:ubuntu下odb 安装 get-apt install gcc get-apt install g++ get-apt install odb 生成的odb位于:/usr/odb 生成的库(l ...

  2. ODB学习笔记之基础环境搭建

    一,简介 ODB是应用于C++的一个开源.跨平台.跨数据库的对象关系映射(ORM)系统. 它可以让你持久化C++对象到关系数据库,而不必处理表.列或者SQL,无需手动编写任何映射代码. ODB支持My ...

  3. C++ ORM ODB 入门介绍(一)

    2019独角兽企业重金招聘Python工程师标准>>> :::欢迎广大oscer拍砖和交流. C++的语言特性决定了在C++中的ORM框架不可能像Java,C#那没有那么灵活. C+ ...

  4. 如何使用ODB(How to use odb On windows)

    1.下载ODB library:ODB Compiler,Common Runtime Library,Database Runtime Library. http://www.codesynthes ...

  5. python读取odb_如何使用python脚本更新Abaqus odb文件的节点值?

    我可能错了,但是没有办法调用某个方法来替换odb中的现有值.但是,您可以做的是创建一个新的步骤和帧(或者只是现有步骤中的一个帧),然后使用新值创建一个新的field output对象.在 如果您能接受 ...

  6. odb 使用指南(四)数据库查询

    背景 最近一直在看odb官网上odb-manual,由于是全英文文档,仔细看过一遍之后虽然感觉基本了解,但是隔几天之后再翻开时又要逐一回忆当初理解的一些细节,毕竟不是母语,没有那种一看就条件反射式的想 ...

  7. ODB 之 persist compile error

    今天遇到一个很诡异的问题,报错如下: C:\DiskD\Projects.plus\Kolo\PatientManagement\Common\odb/database.txx(38): error ...

  8. WPF之Binding(转)

    WPF之Binding Binding即绑定,听上去像一个音译词,很有趣,我们生活中常用的类似还有一个词,叫want to,我们叫妄图,只不过略加了感情色彩,扯远了,回到正题说绑定. 感觉这个东西在W ...

  9. 关于多库操作一些想法

    关于多库操作一些想法 /// <summary>         /// 功能描述:sql连接方法         /// </summary>         /// < ...

  10. tipask二次开发总结_二次开发自我总结

    Odb 结构如图上所示(来自于 doc ),可以很明显地分成两部分: Model Data . Result Data .所以要获取节点信息,材料信息, part 信息以及截面信息得用到 odb.As ...

最新文章

  1. 在Ubuntu14.04 64位上编译CMake源码操作步骤
  2. 做事范围是多么多么重要
  3. 微服务为什么一定要选spring cloud?
  4. CSS3 美女动画相框
  5. 论亚马逊QLDB与腾讯TDSQL对历史数据的管理和计算
  6. COBBLER无人值守安装-----已用真实服务器测试
  7. Audio Offload
  8. jQuery基本过滤选择器
  9. android 常用命令,Android开发常用命令整理
  10. 【Android】Windows环境安装Android Studio教程
  11. Linux内外存访问
  12. iPhone 14处理器曝光:万众期待的最硬核升级凉了
  13. Apktool 使用教程
  14. VScode 删除远程资源管理器中SSH TARGETS
  15. 在终端里面测试你的的打字速度
  16. spi通信问题-有波形但无法获取正确数据:MOSI和SCK
  17. PPPOE拨号经常掉线问题
  18. 光头老法师手持尼康却能玩出佳能的效果
  19. Android之数据存储-刘志远-专题视频课程
  20. 「CSDN 2022 和 2023」年度征文获奖名单已公布

热门文章

  1. 轻松拆书,制作思维导图:ChatGPT一键生成
  2. ASO优化之如何提升用户留存率
  3. html语言语法骨架格式,0002 认识HTML(骨架、DOCTYPE、lang、charset)
  4. unity md5加密
  5. I. 剪绳子(中等)
  6. STM32PWM控制智能风扇
  7. linux下的cc/gcc命令
  8. K8s集群RBAC认证授权详解
  9. IOS Modal Segue和Unwind Segue的使用Demo-附完整工程
  10. vue-quill-editor自定义字体大小和字体样式