本文以MySQL数据库为例,其他数据类似。

官方文档和下载

ODB官方首页    官方开发者说明书(开发教程)

安装下载首页(下载与安装教程Windows/Linux)

Windows安装步骤(都是英文版,流程虽然详细,但是却略显麻烦,主要是因为ODB的机制造成的)

ODB的使用原理

下面介绍ODB的使用原理来说明为什么会有这么多步骤:

ODB的架构和流程

(1)你自己定义一个C++的Person类.h/.cpp
(2)用安装的ODB Compiler编译Person.h得到新的

必选:

MySQL官方C开发库

只用这个即可同时开发C++程序

作用:这个是MySQL官方提供的用于C开发程序读写MySQL提供头文件和动态链接库文件以及静态链接库文件,跟ODB没有任何关系。

这个不需要编译,提供现成的头文件和库文件。可以用C直接读写MySQL数据库。

官方下载地址(全部都有自己选): libmysqlclient

百度云下载仅提供:【mysql-connector-c-6.1.6-win32.zip】或者【mysql-connector-c-6.1.6-winx64.zip】

MySQL官方C++开发库

不建议用:

后来发现/cpp里面下载的压缩文件中并没有【mysql_version.h】和【mysql_time.h】而是在/c的C版本包里有。所以下载了上面/c网址下的包。下载:mysql-connector-c++-noinstall-1.1.6-win32.zip 或者 mysql-connector-c++-noinstall-1.1.6-win64.zip

下载并使用ODB编译器

官方下载地址   百度云下载: odb-2.4.0-i686-windows.zip

主要功能:将自定义ODB结构编译生成标准的.hxx头文件和标准的.cxx源文件。

这个是个bin/odb.exe可执行文件,免安装。要想使用这个EXE只需要打开CMD终端,将目录切换到此目录即可执行:

上图表示odb已经可以使用。

下载并编译LIBODBlibodb-2.4.0.zip

官方下载地址   百度云下载地址

主要作用:官方名称叫一般运行时库Common Runtime Library (libodb),odb的主要功能接口都在这个库里面提供。这里面有源代码和VS工程,编译完生成的库文件即可投入使用。

下载并编译数据库运行时库LIBODB-<DATABASE>

官方下载地址  libodb-mssql-2.4.0.zip、libodb-oracle-2.4.0.zip、libodb-mysql-2.4.0.zip

百度云下载:libodb-mssql-2.4.0.zip、libodb-oracle-2.4.0.zip、libodb-mysql-2.4.0.zip

主要作用:将第三方数据库接口封装成统一接口给libodb,从而实现跨数据库访问。这些运行时库用VS Building之后会生成lib和dll文件

libodb-mysql在编译的时候需要两个东西(参考INSTALL文件):

(1)libodb-2.4.0中编译生成的头文件和连接库

(2)MySQL的客户端包,也就是【mysql-connector-c-6.1.6-win32.zip】里面的头文件和连接库

添加方法参考:http://blog.csdn.net/calmreason/article/details/6989390

直接编译会因为(1)(2)你没有提供而报错:

将libodb的/lib和/odb目录拷贝到libodb-mysql的工程中覆盖

重新编译提示缺少mysql-connector-c头文件:

将mysql-connector-c-2.4.0中的include和lib目录拷贝到odb-mysql-2.4.0的工程中覆盖

重新设置工程属性,编译,编译成功:

Debug生成lib【odb-mysql-d.lib】和dll【odb-mysql-d-2.4-vc10.dll】文件

Release生成lib【odb-mysql-d.lib】和dll【odb-mysql-d-2.4-vc10.dll】文件

编译运行Hello World

官方下载地址   百度云下载:odb-examples-2.4.0.zip

选择examples版本(以MySQL为例):


将【hello-mysql-vc10】project设置为启动项目,直接编译会报错:error MSB6006: "cmd.exe" exited with code 9009.

这是odb环境变量没有设置成功的问题,需要将odb.exe路径设置到系统path变量中(最好重启生效)

之后会提示缺少一些头文件:主要是libodb的头文件、libodb-mysql的头文件

其实是需要:LIBODB(odb-d.lib)、LIBODB-<MYSQL>(odb-mysql-d.lib).(LIBMYSQLCLIENT(mysql-connector-c-6.1.6-win32)这个已经被编译到odblib-mysql中了,所以不需要了)。

头文件自己加,库文件需要什么工程里已经为你写好了:

由于刚才在编译libodb-mysql的时候已经将libodb和mysql-connector-c的资源添加过了。

所以现在只需要将libodb-mysql中的:include、odb、lib这三个目录靠过来并在example(或者你自己的工程)工程属性中添加引用即可。

目前项目中的【person.hxx】文件是一个odb模板文件,还不能直接被VS编译使用,项目中的【person-odb.hxx】、【person-odb.cxx】、【person-odb.ixx】也只是空引用,打不开,因为这些文件还不存在,需要odb编译器编译之后生成新的.h文件和.cpp文件才可以被CPP项目使用

将【person.hxx】拷贝到odb的bin目录下,cmd执行:odb -d mysql --generate-query --generate-schema person.hxx

执行完生成【person-odb.hxx】、【person-odb.cxx】、【person-odb.ixx】、【person.sql】这四个文件:

将这四个文件拷贝到本项目【person.hxx】文件同级目录下

创建数据库表

用【person.sql】创建数据库表。

可以成功编译:

生成的文件driver.exe在目录:【F:\编程开发\C++\ODB\odb-examples-2.4.0\odb-examples-2.4.0\hello\Debug】下,为了运行exe,需要将运行时库文件

libmysql.dll、odb-d-2.4-vc10.dll、odb-mysql-d-2.4-vc10.dll拷贝到此目录。

执行Start Without Debugging:

2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
请按任意键继续. . .

可以看出程序默认连接本机的MySQL服务,并且企图访问端口:10061。

其实这需要具体的设置:ip,port,usr,psw,默认情况下程序使用命令行获取这些信息,参考2.3 Compiling and Running,关于如何使用database的构造函数直接传递数据库访问信息参考:3.4 Database

直接修改代码,在代码中写死连接数据库的信息:

原来的代码:

auto_ptr<database> db (create_database (argc, argv));

修改访问数据库的代码:

 auto_ptr<odb::database> db (new odb::mysql::database ("root"     // database login name,"123456" // database password,"collect" // database name,"localhost",13306));

编译运行:

这个例子可以跑起来其实是需要odb的所有步骤的,其他例子均可仿照这个例子的做法,自己创建的项目引用odb也是如此!奔跑吧,小怪兽!!

【一】ODB - C++ 访问数据库的利器--Hello World On Windows(Version-24)相关推荐

  1. C++ 版本ORM访问数据库之ODB访问oracle的Demo(三)

    ODB的组成部分: 1: 操作系统的ODB编译器 2: odb核心库libodb 3: 各种数据库的相关链接库 使用ODB访问数据需要的库和头文件(不懂, 请看https://www.cnblogs. ...

  2. C++版本 ORM 访问数据库之ODB 的oracle Demo测试(二)

    有上篇文章已经说了odb的环境编译, 现在直接拿来给的例子进行数据库的增删改查操作测试 1. ODB访问oracle数据库_ 插入操作(insert) 直接运行上篇编译好的exe文件会出现如下错误 错 ...

  3. DBA组件---ADO数据库编程利器

    DBA组件---ADO数据库编程利器 一.何谓DBA     DBA即Database Assistant,其实就是数据库编程助手.它是完全采用接口.OO理念用VB6.0编译的DLL COM组件.   ...

  4. 转:在 .NET 中实现异步回调访问数据库

    在 .NET 中实现异步回调访问数据库 时间:2009-11-17 19:52来源:网络收集 作者:佚名 点击: 334 次 技术论坛 某些场合下,在对数据库进行访问时,为了避免同步访问数据时所带来的 ...

  5. 使用浏览器wpf应用程序时访问数据库需要报权限错误的解决方法

    在这篇wpf教程中,如果选用浏览器wpf应用程序模板我遇到了  访问数据库时权限不够  不能打开连接 将项目属性的安全性中设置为完全信任后即解决 转载于:https://www.cnblogs.com ...

  6. python访问数据库如何解决高并发_怎样解决数据库高并发的问题

    怎样解决数据库高并发的问题?解决数据库高并发使用缓存式的Web应用程序架构.增加Redis缓存数据库.增加数据库索引.页面静态化.使用存储过程.MySQL主从读写分离.分表分库.负载均衡集群. 解决数 ...

  7. Spring Boot中使用JdbcTemplate访问数据库

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  8. 关于安卓通过webservice访问数据库问题

    ============问题描述============ 访问数据库时,手机能增删数据库的数据就是显示不了数据库的里的数据不知道是哪里的问题,用的HTTP 这是我webservice中的产看所有信息的 ...

  9. 注意:宝塔曝未授权访问数据库漏洞,尽快升级版本!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://nosec.org/home/ ...

最新文章

  1. 【开源方案共享】无序点云快速的线段分割算法
  2. Java程序员到什么级别可以去BAT上班?
  3. Vue的列表渲染指令
  4. .Net Cache
  5. vue数组刷新_Vue中数组更新后,页面没有动态刷新问题
  6. 海豚计算机语言,海豚模拟器 V5.0 多国语言安装版
  7. 如何避免文件被删无法找回的尴尬?
  8. 智慧消防、消防管理、事件管理、维保巡检、应急管理、培训管理、值班管理、考试管理、设备列表、机构管理、应急预案、axure原型、rp原型
  9. linux查看系统的版本信息失败,Linux - 查看系统的版本信息
  10. studio 3T 使用
  11. 【FL攻防综述】Privacy and Robustness in Federated Learning: Attacks and Defenses
  12. C++信息学奥赛一本通(T1413:确定进制)
  13. JavaWeb概述 [JavaWeb]
  14. 开香港汇丰银行账户需要什么条件?办理需要多少价格?
  15. linux用户密码文件为,Linux用户和密码文件格式详解
  16. BLE(低功耗蓝牙)中ATT协议简介
  17. 共轭梯度算法之FR算法
  18. 2相四线,四相五线,四相六线步进电机接线及驱动方法
  19. Christopher Steiner:算法如何改变了世界
  20. 跳一跳 android 辅助,微信跳一跳辅助插件(纯Android原生实现)

热门文章

  1. CH344是一款USB总线的转接芯片
  2. 0672-5.16.1-CDSW中Run Experiments异常分析
  3. 分析2022年国内国际学校ib的分数
  4. MySQL SQL语句面试准备
  5. 学生管理系统详细架构
  6. 基于Linux中的通讯录管理系统(C语言+双向循环链表+MySQL)
  7. 汉字转16进制 php,PHP实现中文汉字与16进制编码转换
  8. 如何预测转录因子的结合位点教程
  9. Rasa课程、Rasa培训、Rasa面试系列之: Rasa NLU意图和实体-分词器
  10. 普通table表格样式大全