NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
sqlite_connect.hpp
浏览该文件的文档.
1#ifndef NEFORCE_DATABASE_SQLITE_CONNECT_HPP__
2#define NEFORCE_DATABASE_SQLITE_CONNECT_HPP__
3
10
11#ifdef NEFORCE_SUPPORT_SQLITE3
12# include <sqlite3.h>
14NEFORCE_BEGIN_NAMESPACE__
15
21
27
45struct NEFORCE_API sqlite_connect final : idb_tb_connect {
46private:
47 ::sqlite3* link_ = nullptr;
48 mutable string last_error_;
49
50public:
56 sqlite_connect() noexcept { ::sqlite3_open(nullptr, &link_); }
57
63 ~sqlite_connect() noexcept override { this->close(); }
64
73 bool connect(const db_config& config) override;
74
82 NEFORCE_NODISCARD bool reconnect(const db_config& config) override;
83
87 void close() noexcept override;
88
94 NEFORCE_NODISCARD bool set_character_set(const string& encoding) const override;
95
100 NEFORCE_NODISCARD string_view get_character_set() const override;
101
106 NEFORCE_NODISCARD string_view get_error() const override;
107
112 NEFORCE_NODISCARD uint32_t get_errno() const override { return link_ ? ::sqlite3_errcode(link_) : 0; }
113
119 NEFORCE_NODISCARD bool update(const string& sql) const override;
120
126 NEFORCE_NODISCARD unique_ptr<idb_tb_result> query(const string& sql) const override;
127
133 NEFORCE_NODISCARD unique_ptr<idb_prepared_statement> prepare_statement(const string& sql) const override;
134
139 NEFORCE_NODISCARD bool connected() const override { return link_ != nullptr; }
140
145 NEFORCE_NODISCARD bool is_valid() const override;
146};
147
154class NEFORCE_API sqlite_factory final : public idb_factory {
155public:
160 explicit sqlite_factory(db_config config) :
161 idb_factory(move(config)) {}
162
168
174 idb_result* create_result(void* native_result) override;
175};
176 // SQLite3
178 // Database
180
181NEFORCE_END_NAMESPACE__
182#endif
183#endif // NEFORCE_DATABASE_SQLITE_CONNECT_HPP__
idb_factory(db_config config)
构造函数
sqlite_factory(db_config config)
构造函数
idb_connect * create_connect() override
创建SQLite连接对象
idb_result * create_result(void *native_result) override
创建SQLite结果集对象
独占智能指针
数据库抽象接口层
unsigned int uint32_t
32位无符号整数类型
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图
数据库连接配置结构
数据库连接抽象基类
virtual void close()=0
关闭连接
数据库结果集抽象基类
关系型数据库连接抽象基类
NEFORCE_NODISCARD unique_ptr< idb_prepared_statement > prepare_statement(const string &sql) const override
创建预处理语句
NEFORCE_NODISCARD string_view get_error() const override
获取最后错误信息
~sqlite_connect() noexcept override
析构函数
void close() noexcept override
关闭数据库连接
NEFORCE_NODISCARD bool update(const string &sql) const override
执行非查询SQL语句
NEFORCE_NODISCARD string_view get_character_set() const override
获取当前字符集
sqlite_connect() noexcept
默认构造函数
bool connect(const db_config &config) override
建立数据库连接
NEFORCE_NODISCARD uint32_t get_errno() const override
获取最后错误码
NEFORCE_NODISCARD bool reconnect(const db_config &config) override
重新连接数据库
NEFORCE_NODISCARD bool connected() const override
检查连接是否已建立
NEFORCE_NODISCARD unique_ptr< idb_tb_result > query(const string &sql) const override
执行查询SQL语句
NEFORCE_NODISCARD bool is_valid() const override
检查连接是否有效
NEFORCE_NODISCARD bool set_character_set(const string &encoding) const override
设置字符集