odb_sqlite_demo

简介: #include       #include   #include   #include       #include       #include "person.
#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

目录
相关文章
|
6月前
|
Web App开发 监控 前端开发
丝般顺滑:Web动画性能优化小技巧
丝般顺滑:Web动画性能优化小技巧
315 85
|
JavaScript 前端开发 中间件
Redux从入门到进阶,看这一篇就够了!
该文章全面介绍了Redux的基本概念与使用方法,从Redux的安装配置到结合React应用的状态管理,再到中间件如Redux-thunk的使用,帮助读者从零开始掌握Redux在复杂应用中的实践应用。
|
存储 Kubernetes 数据安全/隐私保护
k8s学习--Secret详细解释与应用
Secret 支持四种类型: - **Opaque Secrets**:存储任意类型机密数据,需自行加密。 - **Service Account Token Secrets**:自动管理 API 访问令牌。 - **Docker Registry Secrets**:存储 Docker 私有仓库认证信息。 - **TLS Secrets**:存储 TLS 证书和私钥,用于加密通信。
1159 0
解决方案-CMake error: error in configuration process, project files may be invalid(Windows&VS可参考)
解决方案-CMake error: error in configuration process, project files may be invalid(Windows&VS可参考)
4604 0
|
机器学习/深度学习 搜索推荐 算法
在数字化时代,推荐系统成为互联网应用的重要组成部分,通过机器学习技术根据用户兴趣和行为提供个性化推荐,提升用户体验
在数字化时代,推荐系统成为互联网应用的重要组成部分,通过机器学习技术根据用户兴趣和行为提供个性化推荐,提升用户体验。本文探讨了推荐系统的基本原理、常用算法、实现步骤及Python应用,介绍了如何克服数据稀疏性、冷启动等问题,强调了合理选择算法和持续优化的重要性。
516 4
|
弹性计算 大数据 测试技术
2024年新版阿里云服务器价格表整理汇总,阿里云服务器收费报价详情
随着云计算技术的日益成熟,阿里云作为国内领先的云服务提供商,不断推出适应市场需求的云服务器产品。今天,我们就来详细解析一下阿里云新版云服务器的收费价格,帮助大家更好地选择适合自己的云服务器。2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实
网络中的半双工与全双工
【8月更文挑战第24天】
2487 0
|
负载均衡 测试技术 网络安全
XiaodiSec day008 Learn Note 小迪渗透学习笔记
小迪的渗透学习笔记探讨了网络安全,包括确定目标服务厂商和网络架构(外网与内网)、端口扫描(工具如nmap和masscan)以及应对Web服务器在内网的情况。笔记还提到了旁站攻击、C段扫描、IP反查、CDN理解、WAF检测(wafw00f)、负载均衡识别(lbd)和防火墙分析,特别指出在大企业中检测的复杂性。
|
供应链 监控 安全
《区块链简易速速上手小册》第5章:智能合约(2024 最新版)
《区块链简易速速上手小册》第5章:智能合约(2024 最新版)
754 1
|
缓存 监控 算法