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的更多相关文章
随机推荐
- CSS九宫格样式
CSS .main>div { width: 14%; min-width: 160px; padding: 2%; height: 60px; border: 1px solid #f4f4f ...
- 九度oj 题目1075:斐波那契数列
题目1075:斐波那契数列 时间限制:5 秒 内存限制:32 兆 特殊判题:否 提交:3641 解决:2100 题目描述: 编写一个求斐波那契数列的递归函数,输入n值,使用该递归函数,输出如样例输出的 ...
- 《C语言程序设计(第四版)》阅读心得(四 文件操作)
第10章 对文件的输入输出 函数名 调用形式 功能 fopen fopen(“a1”,”r”); 打开一个文件 fclose fclose( fp ); 关闭数据文件 fgetc fgetc( fp ...
- CRT(secureCRT)中文显示研究&Linux中文字符显示
关于secureCRT设置编码: 基本上只需要设置crt字符编码与远程服务器一致就可以了.要注意的是,有时设置完之后要重启secureCRT, 不然不会生效.
- Journey CodeForces - 839C
There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can r ...
- Codeforces 651D Image Preview【二分+枚举】
题意: 若干张照片,从头开始可以向左右两边读,已经读过的不需要再读,有的照片需要翻转,给定读.滑动和翻转消耗的时间,求在给定时间内最多能读多少页? 分析: 首先明确,只横跨一次,即先一直读一边然后再一 ...
- cogs——21. [HAOI2005] 希望小学
21. [HAOI2005] 希望小学 ★★ 输入文件:hopeschool.in 输出文件:hopeschool.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述 ...
- Ubuntu 16.04安装QtCharts时报错:'qtConfig' is not a recognized test function.
错误: 'qtConfig' is not a recognized test function. 解决方法: 其实5.9分支的版本有问题,转成5.7分支即可. git clone https://g ...
- HashSet源码分析2
package com.test1; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public ...
- 功能超级强大的网络工具nc
摘自:http://www.linuxso.com/command/nc.html 功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数 ...