• 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

  • 相关阅读:
    springcloud 入门 11 (Hystrix Dashboard)
    springcloud 入门 10 (eureka高可用)
    springcloud 入门 9 (消息总线)
    springboot 学习之路 20 (整合RabbitMQ)
    springcloud 入门 8 (config配置中心)
    springcloud 入门 7 (zuul路由网关)
    springcloud 入门 6 (断路器hystrix)
    springcloud 入门 5 (feign源码分析)
    springcloud 入门 4 (rebbon源码解读)
    Java实现多线程下载 URL以及URLConnection
  • 原文地址:https://www.cnblogs.com/lidabo/p/7286426.html
Copyright © 2020-2023  润新知