一,简介

ODB是应用于C++的一个开源、跨平台、跨数据库的对象关系映射(ORM)系统。

它可以让你持久化C++对象到关系数据库,而不必处理表、列或者SQL,无需手动编写任何映射代码。

ODB支持MySQL,SQLite,PostgreSQL,Oracle和微软SQL Server关系数据库以及C ++98/03和C ++11语言标准。

它还配备了用于Boost和Qt可选的配置文件,让你可以无缝地使用这些库持久化C++类的值类型、容器和智能指针。

它有易用性,简洁的代码,安全,数据库可移植性,优良的性能,可维护性等优点。

总之它具有完善的学习文档的非常棒的C++的ORM框架。

可以去官网查看更多:http://www.codesynthesis.com/products/odb/

二,准备工作

以sqlite为例,在windows平台,用VS2013来搭建开发环境。

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的工程都给出了。

ODB学习笔记之基础环境搭建的更多相关文章

  1. Maven 学习笔记(一) 基础环境搭建

    在Java的世界里,项目的管理与构建,有两大常用工具,一个是Maven,另一个是Gradle,当然,还有一个正在淡出的Ant.Maven 和 Gradle 都是非常出色的工具,排除个人喜好,用哪个工具 ...

  2. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  3. Nutch1.7学习笔记:基本环境搭建及使用

    Nutch1.7学习笔记:基本环境搭建及使用 作者:雨水,时间:2013-10-31博客地址:http://blog.csdn.net/gobitan 说明:Nutch有两个主版本1.x和2.x,它们 ...

  4. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  5. 【自动化学习笔记】_环境搭建Selenium2+Eclipse+Java+TestNG_(一)

    目录 第一步  安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下 ...

  6. Ext学习-HelloWorld以及基础环境搭建

    1.目的    在eclipse中搭建EXTJS的基础环境,学习如何按照从官方下载的代码中搭建新的Extjs工程 2.主要包含内容:   1.ExtJS文件下载以及目录说明   2.ExtJS开发环境 ...

  7. oracle学习笔记1(环境搭建)

    学习的开始先剧透一下,本人有点笨,本来想用oracle vbox,装个red hat+oracle,但是虚拟机一直报错,0x00000000内存不能written.所以便想到其他的办法,刚好接触了go ...

  8. Hadoop学习笔记—14.ZooKeeper环境搭建

    从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooK ...

  9. kafka学习笔记1:测试环境搭建

    最近因为架构中引入了kafka,一些之前在代码中通过RPC调用强耦合但是适合异步处理的内容可以用kafka重构一下. 考虑从头学一下kafka了解其特性和使用场景. 环境选择 首先是测试环境的搭建,平 ...

随机推荐

  1. 【原创】jmeter3.0在beanshell中输入中文乱码以及字体大小的更改

    我使用的是最新的jmeter3.0版本,新建一个beanshell sampler,在里面输入中文,发现显示的是乱码,而且字体非常小,看着吃力,调研了一下,可以在bin/jmeter.properti ...

  2. paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换

    paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换 #---KEYWORD #-正则表达式 正则表达式 表示 非指定字符串开头的正则 排除指定目录.. 作者 老 ...

  3. paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较

    paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...

  4. Solr5之Schema.xml详解

    schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即 Norms ,是否存储项向量等等. schema.xml 配置文件的根元素就是 sc ...

  5. 【转载】UEditor前端配置项说明

    UEditor 的配置项分为两类:前端配置项 和 后端配置项 后端配置项具体看这个文档L:后端配置项说明 本文档介绍如何通过设置前端配置项,定制编辑器的特性,配置方法主要通过修改ueditor.con ...

  6. DATE_FORMAT函数用法

    一.在oracle中,当想把字符串为‘2011-09-20 08:30:45’的格式转化为日期格式,我们可以使用oracle提供的to_date函数. sql语句为: SELECT to_date(' ...

  7. Uploadify v3.2.1 上传图片并预览

    前端JSP: <script type="text/javascript"> $(function() { $("#upload_org_code" ...

  8. P2P资料

    常用链接 openstack创建实例的方法 http://www.cnblogs.com/popsuper1982/p/3800426.html qemu官网 http://wiki.qemu.org ...

  9. Python中is和==的区别

    Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...

  10. Codeforces Round #292 (Div. 1) C. Drazil and Park 线段树

    C. Drazil and Park 题目连接: http://codeforces.com/contest/516/problem/C Description Drazil is a monkey. ...