odb_sqlite_demo
| #include <iostream> | |
| #include <odb/database.hxx> | |
| #include <odb/transaction.hxx> | |
| #include <odb/schema-catalog.hxx> | |
| #include <odb/sqlite/database.hxx> | |
| #include "person.hpp" | |
| #include "person-odb.hxx" | |
| using namespace std; | |
| using namespace odb::core; | |
| void create_person_table(shared_ptr<odb::sqlite::database> db) | |
| { | |
| unsigned long john_id, jane_id, joe_id; | |
| // Create a few persistent person objects. | |
| // | |
| person john ("John", "Doe", 33); | |
| person jane ("Jane", "Doe", 32); | |
| person joe ("Joe", "Dirt", 30); | |
| { | |
| transaction t (db->begin()); | |
| // Make objects persistent and save their ids for later use. | |
| // | |
| john_id = db->persist (john); | |
| jane_id = db->persist (jane); | |
| joe_id = db->persist (joe); | |
| t.commit (); | |
| } | |
| } | |
| void query_person(shared_ptr<odb::sqlite::database> db) | |
| { | |
| typedef odb::query<person> query; | |
| transaction t (db->begin()); | |
| auto r (db->query<person>(query::age > 30)); | |
| for (auto i:r){ | |
| cout << "Hello, " << i.first() << "!" << endl; | |
| } | |
| t.commit (); | |
| } | |
| shared_ptr<odb::sqlite::database> open_database(string name, bool create=false) | |
| { | |
| int flags = SQLITE_OPEN_READWRITE; | |
| if (create) flags |= SQLITE_OPEN_CREATE; | |
| shared_ptr<odb::sqlite::database> db(new odb::sqlite::database(name, flags) ); | |
| transaction t (db->begin()); | |
| if (create){ | |
| odb::schema_catalog::create_schema(*db); | |
| } | |
| t.commit (); | |
| return db; | |
| } | |
| shared_ptr<odb::sqlite::database> open_create_database(string name) | |
| { | |
| std::shared_ptr<odb::sqlite::database> db; | |
| try{ | |
| db = open_database(name); | |
| }catch (const odb::exception& e){ | |
| db = open_database(name,true); | |
| } | |
| return db; | |
| } | |
| int main (int argc, char* argv[]) | |
| { | |
| try{ | |
| auto db = open_create_database("test.db"); | |
| create_person_table(db); | |
| query_person(db); | |
| } | |
| catch (const odb::exception& e){ | |
| cerr << e.what () << endl; | |
| return 1; | |
| } | |
| return 0; | |
| } |
from:https://github.com/joseprous/odb-sqlite-test/blob/master/driver.cpp
odb_sqlite_demo的更多相关文章
随机推荐
- pop(),del A[:], a[:] = b[:]/'str'/可迭代的
s = ['a','ma','shi','ge'] s0 = s.pop(0) #---> 有返回值 print(s,s0) s1 = s.remove('shi') #---> 无返回值 ...
- Thawte SSL Web Server 多域型SSL证书
Thawte SSL Web Server 多域型SSL证书,最多支持25个域名,需要验证域名所有权和申请单位信息,属于企业验证型SSL证书,提供40位/56位/128位,最高支持256位自适应加密. ...
- 九度oj 题目1058:反序输出
题目1058:反序输出 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:9677 解决:3495 题目描述: 输入任意4个字符(如:abcd), 并按反序输出(如:dcba) 输入: 题目可 ...
- 全文搜索(A-2)-推荐算法
一般来说推荐算法分为两类. 基于内容过滤的推荐: 基于协同过滤的推荐: 基于内容过滤的推荐,基于特征码描述项目. 协同过滤算法的设计基于一个假设,“和目标用户相似度高的用户,其感兴趣的物品目标用户也会 ...
- es6常用语法和特性
简介 首先,在学习之前推荐使用在线转码器 Traceur 来测试 Demo,避免 babel 下的繁琐配置,从而产生畏难情绪. let 命令 在 ES6 之前,JS 只能使用 var 声明变量,或者省 ...
- topshelf生成Windows服务
一. 概述 Visual C# 工程中选取 Windows 服务(Windows Service)选项,可以创建Windows服务程序,这种开发方式对于开发来说不方便调试,今天介绍另外一种生成Win ...
- Quartz.net框架使用
概述:Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...
- PatentTips - Universal RAID Class Driver
BACKGROUND OF THE INVENTION The present invention relates to the field of data storage devices. Comp ...
- Java日期LocalDate使用
在做报表统计时,需要对指定时间内的数据做统计,则需要使用到时间日期API 在此使用的是java.util.Date的完美私生子LocalDate类 LocalDate方法介绍 now() : 从默认时 ...
- Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
在操作hibernate数据库时,调用saveOrUpdate方法进行更新保存对象时, (1)ID为null时执行SAVE,但是前端jsp通过<input type="hidden&q ...