首页 > 代码库 > odb_sqlite_demo
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。