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));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值