NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
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# include <sqlite3.h>
14NEFORCE_BEGIN_NAMESPACE__
15
21
27
45class NEFORCE_API sqlite_prepared_statement final : public idb_prepared_statement {
46private:
47 ::sqlite3* db_ = nullptr;
48 ::sqlite3_stmt* stmt_ = nullptr;
49
50 uint32_t param_count_ = 0;
51 vector<vector<char>> param_buffers_;
52 bool prepared_ = false;
53 mutable string last_error_;
54
60 void clear_bindings();
61
62public:
71 explicit sqlite_prepared_statement(::sqlite3* db, const string& sql);
72
74 sqlite_prepared_statement& operator=(const sqlite_prepared_statement&) = delete;
75
81
88
95
100 NEFORCE_NODISCARD uint32_t param_count() const noexcept override { return param_count_; }
101
108 bool bind_param(uint32_t index, string_view value) override;
109
116 bool bind_param(uint32_t index, const string& value) override { return bind_param(index, value.view()); }
117
124 bool bind_param(uint32_t index, const char* value) override { return bind_param(index, string_view(value)); }
125
132 bool bind_param(uint32_t index, int32_t value) override;
133
140 bool bind_param(uint32_t index, int64_t value) override;
141
148 bool bind_param(uint32_t index, float64_t value) override;
149
158 bool bind_param(uint32_t index, cbyte_view value) override;
159
167 bool execute() override;
168
177
182 NEFORCE_NODISCARD string_view get_error() const noexcept override { return last_error_.view(); }
183
188 NEFORCE_NODISCARD uint32_t get_errno() const noexcept override { return db_ ? ::sqlite3_errcode(db_) : 0; }
189};
190 // SQLite3
192 // Database
194
195NEFORCE_END_NAMESPACE__
196#endif
197#endif // NEFORCE_DATABASE_SQLITE_PREPARED_STATEMENT_HPP__
NEFORCE_NODISCARD constexpr basic_string_view view(const size_type off, size_type count=npos) const
获取子视图
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 view_type view() const noexcept
获取字符串视图
sqlite_prepared_statement(::sqlite3 *db, const string &sql)
构造函数
bool bind_param(uint32_t index, string_view value) override
绑定字符串视图参数
bool bind_param(uint32_t index, float64_t value) override
绑定浮点数参数
bool bind_param(uint32_t index, const char *value) override
绑定C字符串参数
bool bind_param(uint32_t index, const string &value) override
绑定字符串参数
~sqlite_prepared_statement() override
析构函数
sqlite_prepared_statement & operator=(sqlite_prepared_statement &&other) noexcept
移动赋值运算符
bool execute() override
执行非查询语句
sqlite_prepared_statement(sqlite_prepared_statement &&other) noexcept
移动构造函数
bool bind_param(uint32_t index, int64_t value) override
绑定64位整数参数
NEFORCE_NODISCARD uint32_t get_errno() const noexcept override
获取错误码
bool bind_param(uint32_t index, cbyte_view value) override
绑定二进制数据参数
NEFORCE_NODISCARD string_view get_error() const noexcept override
获取错误信息
unique_ptr< idb_prepared_result > execute_query() override
执行查询语句
NEFORCE_NODISCARD uint32_t param_count() const noexcept override
获取参数数量
bool bind_param(uint32_t index, int32_t value) override
绑定32位整数参数
独占智能指针
动态大小数组容器
数据库抽象接口层
unsigned int uint32_t
32位无符号整数类型
long long int64_t
64位有符号整数类型
double float64_t
64位双精度浮点数类型
int int32_t
32位有符号整数类型
memory_view< const byte_t > cbyte_view
常量字节视图类型别名
basic_string_view< char > string_view
字符字符串视图
预处理语句抽象基类