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的更多相关文章
随机推荐
- buf.swap16()
buf.swap16() 返回:{Buffer} 将 Buffer 解释执行为一个16位的无符号整数数组并以字节顺序交换到位.如果 Buffer 的长度不是16位的倍数,则抛出一个 RangeErro ...
- STM32F407 GPIO原理 个人笔记
datasheet(STM32F407ZGT6.pdf)中,IO structure 为FT,表示容忍5V电压 后面的uart1_TX之类,表示端口复用 共有A~G7组IO口, 每组16个IO口:0~ ...
- java设置项目根目录 工作目录 working dictionary
改变java项目中,绝对路径的根目录 run->run configuration ->Arguments 更改 working dictioinary
- 前端开发:JQuery(1)
JQuery DOM文档加载的步骤: 1. 解析HTML结构: 2. 加载外部脚本和样式: 3. 解析并执行脚本代码: 4. DOM树构建完成: 5. 加载图片等外部文件: 6. 页面加载完成: JS ...
- 将[object Object]转换成json对象
这两天在做中英文双版的文件,页面根据语言读取不同的内容.js模板用的是ejs json文件: "components":{ "pages":{ "ho ...
- android中后一个activity传值给前一个activity的实现
前一个activity跳转到后一个activity设置code: Intent intent=new Intent(MainActivity.this,ActivityTwo.class); star ...
- csu - 1536: Bit String Reordering (模拟)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1536 不知道为何怎么写都写不对. 这题可以模拟. 虽然题目保证一定可以从原串变成目标串,但是不一定 ...
- js程序基础字符串具体
1. .charAt()里面写数字 在一般浏览器上相当于方括号 可是由于IE6的存在他就有了用处 由于IE6不兼容方括号 2. charCodeAt() 和charAt几乎相 ...
- Outlook2010 没有Exchange Server,怎么自动回复邮件?
步骤 1:创建邮件模板 单击“开始”>“新建邮件”. 在邮件正文中,键入要作为自动答复发送的邮件. 在邮件窗口中,单击“文件”>“另存为”. 在“另存为”对话框中的“保存类型”列表中,单击 ...
- C#如何设置窗体不能修改大小
找到FormBorderStyle设置为FixedDialog即可