摘要: 2、使用 首先,需要定義乙個物件,用來和資料庫字段對應: [cce lang=」cpp」] #ifndef volume_h #define volume_h #include #include #pragma db object cl
2、使用
首先,需要定義乙個物件,用來和資料庫字段對應:
[cce lang=」cpp」]
#ifndef volume_h
#define volume_h
#include
#include
#pragma db object
class volume
unsigned long long id()
void id(unsigned long long i)
const std::string &name()
void name(const std::string &n)
const std::string &location()
void location(const std::string &l)
const std::string &cover_path()
void cover_path(const std::string &c)
int trackcount()
void trackcount(int c)
private:
friend class odb::access;
volume () {}
#pragma db id auto
unsigned long long _id;
std::string _name;
std::string _location;
std::string _cover_path;
int _trackercount;
};[/cce]
首先是引入core.hxx這個標頭檔案,包含access這個類。在類上面新增#pragma db object巨集,標識這是個資料庫物件。在主鍵上增加巨集#pragma db id auto,標識這個是主鍵,並且自增。這兩個巨集都是提供資訊給odb,用來生成最終c++**的。因為資料庫對應欄位都是私有型別,所以需要將odb::access宣告為友元。
為了方便,這裡連線資料庫都使用sqlite,因此,需要引入sqlite相關的包。建立資料庫連線(對sqlite來說,就是開啟資料庫檔案):
[cce lang=」cpp」]
std::shared_ptrsqlitedb(new odb::sqlite::database("mycppweb.db", sqlite_open_readwrite | sqlite_open_create));
[/cce]
注:這裡需要引入標頭檔案odb/sqlite/database.hxx,建立資料庫連線的第乙個引數(只針對sqlite)是資料庫檔名,後面是開啟的flag,這裡主要是提示如果資料庫檔案不存在,預設建立。另外,這裡使用了c++11的shared_ptr,g++需要新增引數-std=c++0x
插入物件:
[cce lang=」cpp」]
[/cce]
插入的時候,使用了事務,需要引入odb/transaction.hxx標頭檔案,並且儘量減少transaction的生命週期。
通過odb命令生成對應的**:
[cce lang=」bash」]
odb –database sqlite \
–hxx-suffix .hpp –ixx-suffix .ipp –cxx-suffix .cpp \
–output-dir /tmp \
–generate-query –generate-schema –schema-format embedded volume.h
[/cce]
這裡指定輸出的資料庫是sqlite,建立schema的語句嵌入到**裡面。
執行之後,會生成volume-odb.hpp、volume-odb.cpp和volume-odb.ipp三個檔案。檢視volume-odb.cpp就會發現,裡面包含了volume.h中指定的類和資料庫表的關係。如果希望通過**來建立資料庫(貌似需要自己來判斷是否已經存在,否則第二次執行又會重新建立表,導致資料丟失),可以通過:
[cce lang=」cpp」]
[/cce]
odb的查詢,還沒有去嘗試,具體文件在
C 的ORM 開源框架
odb 是乙個開源的,支援多平台,支援多資料庫的 c 的 orm 框架,可將 c 物件資料庫表對映,進行輕鬆的資料庫查詢和操作。使用odb進行物件持久化具有以下優點 示例 view source print?01odb sqlite database db people.db 02 03person...
C 中流行的ORM框架
net c 主流orm總攬sqlsugar sqlsugar是國人開發者開發的一款基於.net的orm框架,是可以執行在.net 4.net core的高效能 輕量級 orm框架,眾多.net框架中最容易使用的資料庫訪問技術。特點 開源 免費 國內開發者開發 維護 支援.net core 支援主流資...
C 實現的ORM對映工具類介紹 三
dbmanager類 class dbmanager include dbmanager.hpp dbmanager dbmanager pdbmanager null dbmanager dbmanager for int i 0 iclassnamevector.size j if pmodel...