ODB库安装使用简介
来源:互联网 发布:实用数据再分析法 pdf 编辑:程序博客网 时间:2024/05/22 06:50
调研
- awesome cpp的database列表
- Hiberlite ORM仅支持sqlite
- [ODB]简洁,支持主流数据库,官方手册
- OTL不支持ORM,例子在这里
- SOCI同样不支持ORM,查看例子
下载
- odb-2.4.0-i686-windows
- libodb-2.4.0
- libodb-sqlite-2.4.0(自行选择)
- libodb-boost-2.4.0(自行选择,主要为智能指针添加支持)
编译
- 添加odb的环境变量:
C:\Users\Administrator
λ odb --version
ODB object-relational mapping (ORM) compiler for C++ 2.4.0
Copyright (c) 2009-2015 Code Synthesis Tools CC
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - 编译libodb-vc10.sln
编译libodb-sqlite-vc10.sln
注意:- 需要添加包含目录
需要包含链接库目录,由于sqlite本身没有提供lib文件,选择使用vs自动生成
E:\DB\sqlite>LIB /DEF:sqlite3.def /machine:IX86Microsoft (R) Library Manager Version 10.00.30319.01Copyright (C) Microsoft Corporation. All rights reserved. 正在创建库 sqlite3.lib 和对象 sqlite3.exp
右键属性中,取消预处理器中的的SQLITE_ENABLE_UNLOCK_NOTIFY命令,然后可以正常编译工程;否则将出现下面的问题
1> 正在创建库 ..\..\lib\odb-sqlite-d.lib 和对象 ..\..\lib\odb-sqlite-d.exp1>connection.obj : error LNK2019: 无法解析的外部符号 _sqlite3_unlock_notify,该符号在函数 "public: void __thiscall odb::sqlite::connection::wait(void)" (?wait@connection@sqlite@odb@@QAEXXZ) 中被引用1>E:\DB\libodb-sqlite-2.4.0\odb\sqlite\..\..\bin\odb-sqlite-d-2.4-vc10.dll : fatal error LNK1120: 1 个无法解析的外部命令1>1>生成失败。
示例
编译example项目的access-sqlite-vc10工程
#ifndef PERSON_HXX#define PERSON_HXX#include <string>#include <odb/core.hxx>#pragma db objectclass person{public: person () {} person (const std::string& email, const std::string& first, const std::string& middle, const std::string& last, unsigned short age) : email_ (email), first_ (first), middle_ (middle), last_ (last) { data_.age = age; } // 标准存取器和修改器能够被odb发现使用 const std::string& email () const { return email_; } void email (const std::string& email) { email_ = email; } const std::string& getFirst () const { return first_; } std::string& setFirst () { return first_; } const std::string& g_middle () const { return middle_; } void s_middle (const std::string& middle) { middle_ = middle; } const char* last () const { return last_.c_str (); } void last (const char* last) { last_ = last; } unsigned short age () const { return data_.age; } void age (unsigned short age) { data_.age = age; }private:#pragma db id //自动生成主键 std::string email_; std::string first_; #pragma db get(g_middle) set(s_middle) std::string middle_;#pragma db get(std::string (this.last ())) set(last ((?).c_str ())) std::string last_;#pragma db transient struct { unsigned short age; } data_;#pragma db member(age) virtual(unsigned short) };#endif // PERSON_HXX
main函数
#include <memory> // std::auto_ptr#include <iostream>#include <odb/database.hxx>#include <odb/transaction.hxx>#include "database.hxx" // create_database#include "person.hxx"#include "person-odb.hxx"using namespace std;using namespace odb::core;intmain (int argc, char* argv[]){ try {//创建db auto_ptr<database> db (create_database (argc, argv)); { person john ("john@doe.com", "John", "X", "Doe", 31); person jane ("jane@doe.com", "Jane", "Y", "Doe", 29); transaction t (db->begin ()); db->persist (john);//插入 db->persist (jane); t.commit (); } {//查询 typedef odb::result<person> result; transaction t (db->begin ()); result r (db->query<person> ()); for (result::iterator i (r.begin ()); i != r.end (); ++i) cout << i->getFirst () << ' ' << i->g_middle () << ' ' << i->last () << ' ' << i->email () << ' ' << i->age () << endl; t.commit (); } } catch (const odb::exception& e) { cerr << e.what () << endl; return 1; }}
vs会自动执行odb命令,来生成对应的person-odb.ixx,person-odb.hxx,person-odb.cxx;如果不能成功调用odb,可以参见4。
参考:
[1].http://www.sqlite.org/howtocompile.html
[2].http://blog.csdn.net/feng______/article/details/33411119
[3].http://www.codesynthesis.com/products/odb/doc/manual.xhtml
[4].http://wiki.codesynthesis.com/Using_ODB_with_Microsoft_Visual_Studio
0 0
- ODB库安装使用简介
- ORM:ODB安装使用过程
- Trafodion odb 安装及使用
- macOS配置使用ODB
- Trafodion 使用odb加载中文
- 如何使用ODB(How to use odb On windows)
- Ubuntu 使用C++ ORM框架--ODB
- 一个neodatis-odb.jar包使用的例子
- Trafodion 使用odb导出表数据到文件
- CVS安装、简介、使用
- SvnServer安装使用简介
- Docker简介/安装/使用
- Homebrew 安装使用简介
- docker简介、安装、使用
- ODB Examples
- ODB Documentation
- odb访问
- MinGW安装与使用简介
- java 的 equals()方法
- AIDL的学习记录
- 金额转换,阿拉伯数字的金额转换成中国传统大写汉字的形式
- Win10 Bash搭建嵌入式Qt开发平台
- BZOJ 1497 最小割
- ODB库安装使用简介
- Linux下用户组、文件权限详解
- 解决菜单Menu图标不加载的问题
- 二叉树叶节点和
- ZZULI 1902: 985的因子对难题
- Android基础:WebView
- C++ STL--stack/queue 的使用方法
- 史上最全 Android 面试资料集合
- 下载过程中修改文件名