NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
sqlite_prepared_statement.hpp
浏览该文件的文档.
1#ifndef NEFORCE_DATABASE_SQLITE_PREPARED_STATEMENT_HPP__
2#define NEFORCE_DATABASE_SQLITE_PREPARED_STATEMENT_HPP__
3
10
11#ifdef NEFORCE_SUPPORT_SQLITE3
12# ifdef NEFORCE_SUPPORT_SQLCIPHER
13# include <sqlcipher/sqlite3.h>
14# else
15# include <sqlite3.h>
16# endif
18NEFORCE_BEGIN_NAMESPACE__
19
25
31
49class NEFORCE_API sqlite_prepared_statement final : public idb_prepared_statement {
50private:
51 ::sqlite3* db_ = nullptr;
52 ::sqlite3_stmt* stmt_ = nullptr;
53
54 uint32_t param_count_ = 0;
55 vector<vector<char>> param_buffers_;
56 bool prepared_ = false;
57 mutable string last_error_;
58
64 void clear_bindings();
65
66public:
75 explicit sqlite_prepared_statement(::sqlite3* db, const string& sql);
76
78 sqlite_prepared_statement& operator=(const sqlite_prepared_statement&) = delete;
79
85
92
99
104 NEFORCE_NODISCARD uint32_t param_count() const noexcept override { return param_count_; }
105
112 bool bind_param(uint32_t index, string_view value) override;
113
120 bool bind_param(uint32_t index, const string& value) override { return bind_param(index, value.view()); }
121
128 bool bind_param(uint32_t index, const char* value) override { return bind_param(index, string_view(value)); }
129
136 bool bind_param(uint32_t index, int32_t value) override;
137
144 bool bind_param(uint32_t index, int64_t value) override;
145
152 bool bind_param(uint32_t index, float64_t value) override;
153
162 bool bind_param(uint32_t index, cbyte_view value) override;
163
171 bool execute() override;
172
181
186 NEFORCE_NODISCARD string_view get_error() const noexcept override { return last_error_.view(); }
187
192 NEFORCE_NODISCARD uint32_t get_errno() const noexcept override {
193 return db_ != nullptr ? ::sqlite3_errcode(db_) : 0;
194 }
195};
196 // SQLite3
198 // Database
200
201NEFORCE_END_NAMESPACE__
202#endif
203#endif // NEFORCE_DATABASE_SQLITE_PREPARED_STATEMENT_HPP__
constexpr basic_string_view view(const size_type off, const size_type count=npos) const
获取子视图
constexpr view_type view() const noexcept
获取字符串视图
~sqlite_prepared_statement() override
析构函数
bool bind_param(uint32_t index, int32_t value) override
绑定32位整数参数
uint32_t param_count() const noexcept override
获取参数数量
bool bind_param(uint32_t index, const string &value) override
绑定字符串参数
sqlite_prepared_statement(sqlite_prepared_statement &&other) noexcept
移动构造函数
bool bind_param(uint32_t index, cbyte_view value) override
绑定二进制数据参数
bool bind_param(uint32_t index, string_view value) override
绑定字符串视图参数
unique_ptr< idb_tb_result > execute_query() override
执行查询语句
bool bind_param(uint32_t index, const char *value) override
绑定C字符串参数
bool bind_param(uint32_t index, int64_t value) override
绑定64位整数参数
bool execute() override
执行非查询语句
sqlite_prepared_statement & operator=(sqlite_prepared_statement &&other) noexcept
移动赋值运算符
bool bind_param(uint32_t index, float64_t value) override
绑定浮点数参数
sqlite_prepared_statement(::sqlite3 *db, const string &sql)
构造函数
uint32_t get_errno() const noexcept override
获取错误码
string_view get_error() const noexcept override
获取错误信息
独占智能指针
动态大小数组容器
数据库抽象接口层
long int64_t
64位有符号整数类型
unsigned int uint32_t
32位无符号整数类型
int int32_t
32位有符号整数类型
double float64_t
64位双精度浮点数类型
memory_view< const byte_t > cbyte_view
常量字节视图类型别名
basic_string_view< char > string_view
字符字符串视图
预处理语句抽象基类