-
Notifications
You must be signed in to change notification settings - Fork 1.4k
C++ 快速入门
qiuwenchen edited this page Mar 7, 2024
·
4 revisions
WCDB 的最基础的调用过程大致分为三个步骤:
- 模型绑定
- 创建数据库与表
- 操作数据
在WCDB内,ORM(Object Relational Mapping)是指
- 将一个C++的类或结构体,映射到数据库的表和索引;
- 将类或结构体的成员变量,映射到数据库表的字段;
这一过程。通过ORM,可以达到直接通过C++对象或结构体进行数据库操作,省去拼装过程的目的。
对于已经存在的 Sample
类:
// Sample.hpp
class Sample {
// 只支持绑定 public 的成员变量
public:
Sample();//必须要有默认构造函数
Sample(int identifier, const std::string& content);//非必须实现的构造函数,只是为了演示方便
int identifier;
std::string content;
};
可通过 WCDB 的内建的宏将 Sample
类的 identifier
和 description
两个变量绑定到了表中同名字段:
// Sample.hpp
class Sample {
public:
Sample();//必须要有默认构造函数
Sample(int identifier, const std::string& content);//非必须实现的构造函数,只是为了演示方便
int identifier;
std::string content;
WCDB_CPP_ORM_DECLARATION(Sample)
};
// Sample.cpp
WCDB_CPP_ORM_IMPLEMENTATION_BEGIN(Sample)
WCDB_CPP_SYNTHESIZE(identifier)
WCDB_CPP_SYNTHESIZE(content)
WCDB_CPP_ORM_IMPLEMENTATION_END
这部分代码基本都是固定模版,暂时不用理解其每一句的具体含义,我们会在[模型绑定][Cpp-Object-Relational-Mapping]一章中进行进一步介绍。
One line of code 是 WCDB 接口设计的一个基本原则,绝大部分的便捷接口都可以通过一行代码完成。
WCDB::Database database("~/Intermediate/Directories/Will/Be/Created/sample.db");
WCDB 会在创建数据库文件的同时,创建路径中所有未创建文件夹。
// 以下代码等效于 SQL:CREATE TABLE IF NOT EXISTS sampleTable(identifier INTEGER, content TEXT)
bool ret = database.createTable<Sample>("sampleTable");
对于已进行模型绑定的类,同样只需一行代码完成。
基本的增删查改同样是 One line of code
//Prepare data
Sample object(1, "sample_insert");
//Insert
// 以下代码等效于 SQL:INSERT INTO sampleTable(identifier, content) VALUES(1, sample_insert)
ret &= database.insertObjects<Sample>(Sample(1, "sample_insert"), "sampleTable");
// 以下代码等效于 SQL:SELECT identifier, content from sampleTable
WCDB::OptionalValueArray<Sample> objects = database.getAllObjects<Sample>("sampleTable");
//Prepare data
Sample updateObject(0, "sample_update");
//Update
// 以下代码等效于 SQL:UPDATE sampleTable SET content = sample_update WHERE identifier > 0
ret &= database.updateObject(updateObject,
WCDB_FIELD(Sample::content),
"sampleTable",
WCDB_FIELD(Sample::identifier) > 0);
类似
WCDB_FIELD(Sample::identifier) > 0
的语法是 WCDB 的特性,它能通过 C++ 语法来进行 SQL 操作,我们将在语言集成查询一章中进行进一步的介绍。
// 以下代码等效于 SQL:DELETE FROM sampleTable
ret &= database.deleteObjects("sampleTable");
本章简单介绍了 WCDB 进行操作的过程,并展示了基本的用法。 后续将对里面的逐个细节进行详细介绍。建议按照顺序阅读基础教程部分,而进阶教程则可以按照个人需求选择阅读。
- 欢迎使用 WCDB
- 基础教程
- 进阶教程
- 欢迎使用 WCDB
- 基础教程
- 进阶教程
- 欢迎使用 WCDB
- 基础教程
- 进阶教程
- 欢迎使用 WCDB
- 基础教程
- 进阶教程