Ubuntu 使用C++ ORM框架--ODB

系统环境: Ubuntu12.04 Server

ODB简介 :

ODB是用于C ++的开源,跨平台和跨数据库对象关系映射(ORM)系统。 它允许您将C ++对象保留到关系数据库,而无需处理表,列或SQL,而无需手动编写任何映射代码。 ODB支持MySQL,SQLite,PostgreSQL,Oracle和Microsoft SQL Server关系数据库以及C ++ 98/03和C ++ 11语言标准。 它还带有Boost和Qt的可选配置文件,允许您在持久的C ++类中无缝地使用这些库中的值类型,容器和智能指针。

####一 .安装
因为我这是一台纯净的ubuntu, 所以很多软件,库都没安装, 如果有的话可以忽略
#####1.安装必要软件,库

apt-get install gcc g++ mysql-server libmysqlclient-dev make -y

#####2.下载
http://www.codesynthesis.com/products/odb/download.xhtml

odb-2.4.0.tar.gz
libodb-2.4.0.tar.gz
libodb-mysql-2.4.0.tar.gz
#####3.解压
创建一个目录
将下载的3个tar.gz的包放到目录下
解压

mkdir odb
mv odb-2.4.0.tar.gz libodb-2.4.0.tar.gz libodb-mysql-2.4.0.tar.gz odb
cd odb
tar -xf odb-2.4.0.tar.gz
tar -xf libodb-2.4.0.tar.gz
tar -xf libodb-mysql-2.4.0.tar.gz

#####4.安装
安装libodb-2.4.0

cd libodb-2.4.0
./configure
make
make install

安装libodb-mysql-2.4.0

cd libodb-mysql-2.4.0
./configure
make 
make install

安装odb-2.4.0

cd odb-2.4.0
./configure
### 报错
configure: error: g++ does not support plugins; reconfigure GCC with --enable-plugin
gcc -v ### 查看一下gcc 版本 我这里是4.6 下面就 安装4.6版本的dev包
apt-get install gcc-4.6-plugin-dev
### 安装完再次运行
./configure
### 报错
configure: error: libcutl is not found; consider using --with-libcutl=DIR

安装 libcutl-1.10.0
去官网下载libcutl-1.10.0.tar.gz http://www.codesynthesis.com/projects/libcutl/

### 解压
tar -xvf libcutl-1.10.0.tar.gz
### 安装
./configure
make
make install

libcutl 安装成功后, 继续安装odb-2.4.0

./confgiure
make
make install

没报错 , odb安装成功

二.使用

使用官方的helloworld 例子
http://scm.codesynthesis.com/?p=odb/odb-examples.git;a=tree;f=hello;hb=HEAD
命令行执行

odb -d mysql --generate-query --generate-schema person.hxx

报错

odb: error while loading shared libraries: libcutl-1.10.so: cannot open shared object file: No such file or directory
原因是,在安装libcutl的时候, configure没有指定prefix, 找不到该so文件

创建libcutl-1.10.so的软连接

ln -s /usr/local/lib/libcutl-1.10.so /usr/lib/libcutl-1.10.so

再次执行 生成4个文件

-rw-r--r-- 1 root root  8754 May  5 17:56 person-odb.hxx
-rw-r--r-- 1 root root   311 May  5 17:56 person.sql
-rw-r--r-- 1 root root  1487 May  5 17:56 person-odb.ixx
-rw-r--r-- 1 root root 21752 May  5 17:56 person-odb.cxx

修改driver.cxx文件
原代码:

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

修改为

auto_ptr<odb::database> db (
   new odb::mysql::database (
   "root"     //user
   ,"123456" //passwd
   ,"test" // database
   ,"localhost"
   ,3306
   ));

创建数据库

mysql -u root -p'123456' -e 'create database test'

修改 person.sql

1 /* This file was generated by ODB, object-relational mapping (ORM)
  2  * compiler for C++.
  3  */
  4 use test;
  5 DROP TABLE IF EXISTS `person`;
  6
  7 CREATE TABLE `person` (
  8   `id` BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  9   `first` TEXT NOT NULL,
 10   `last` TEXT NOT NULL,
 11   `age` SMALLINT UNSIGNED NOT NULL)
 12  ENGINE=InnoDB;
 13

创建表

mysql -uroot -p'123456' < person.sql

执行

c++ -c person-odb.cxx
c++ -DDATABASE_MYSQL -c driver.cxx
c++ -o driver driver.o person-odb.o -lodb-mysql -lodb

执行成功,生成执行档 driver

root@ubuntu:~/code/hello# ./driver
Hello, John Doe!
Hello, Jane Doe!

count  : 3
min age: 31
max age: 33

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值