NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
sqlite_result.hpp
浏览该文件的文档.
1#ifndef NEFORCE_DATABASE_SQLITE_RESULT_HPP__
2#define NEFORCE_DATABASE_SQLITE_RESULT_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
39
56struct NEFORCE_API sqlite_result final : idb_tb_result {
57private:
58 ::sqlite3_stmt* stmt_ = nullptr;
60 size_type cursor_ = 0;
61 size_type columns_ = 0;
62
63 unique_ptr<vector<string_view>> column_names_;
64 unique_ptr<vector<int>> column_types_;
65
66public:
73
81 explicit sqlite_result(::sqlite3_stmt* statement);
82
90 sqlite_result(::sqlite3_stmt* statement, sqlite_cleanup_action cleanup);
91
97 ~sqlite_result() override;
98
104 NEFORCE_NODISCARD NEFORCE_DEPRECATED_FOR("use COUNT(*) instead of using this function") size_type
105 row_count() const noexcept override {
106 return 0;
107 }
108
113 NEFORCE_NODISCARD size_type column_count() const noexcept override { return columns_; }
114
119 NEFORCE_NODISCARD bool empty() const noexcept override { return stmt_ == nullptr; }
120
125 NEFORCE_NODISCARD const vector<string_view>& column_names() const noexcept override { return *column_names_; }
126
127 NEFORCE_NODISCARD column_meta column_metadata(size_type n) const override;
128
133 NEFORCE_NODISCARD const vector<int>& column_types() const noexcept { return *column_types_; }
134
139 NEFORCE_NODISCARD bool next() noexcept override;
140
146 NEFORCE_NODISCARD string_view get(size_type n) const noexcept override;
147
153 NEFORCE_NODISCARD bool get_bool(size_type n) const override;
154
160 NEFORCE_NODISCARD int16_t get_int16(size_type n) const override;
161
167 NEFORCE_NODISCARD int32_t get_int32(size_type n) const override;
168
174 NEFORCE_NODISCARD int64_t get_int64(size_type n) const override;
175
181 NEFORCE_NODISCARD float32_t get_float32(size_type n) const override;
182
188 NEFORCE_NODISCARD float64_t get_float64(size_type n) const override;
189
195 NEFORCE_NODISCARD decimal_t get_decimal(size_type n) const override;
196
202 NEFORCE_NODISCARD vector<char> get_blob(size_type n) const override;
203
209 NEFORCE_NODISCARD uint64_t get_bit(size_type n) const noexcept override;
210
216 NEFORCE_NODISCARD date get_date(size_type n) const override { return get_datetime(n).date(); }
217
223 NEFORCE_NODISCARD time get_time(size_type n) const override { return get_datetime(n).time(); }
224
232 NEFORCE_NODISCARD datetime get_datetime(size_type n) const override;
233
241 NEFORCE_NODISCARD timestamp get_timestamp(size_type n) const override;
242};
243 // SQLite3
245 // Database
247
248NEFORCE_END_NAMESPACE__
249#endif
250#endif // NEFORCE_DATABASE_SQLITE_RESULT_HPP__
日期时间类
constexpr const _NEFORCE time & time() const noexcept
获取时间部分
constexpr const _NEFORCE date & date() const noexcept
获取日期部分
独占智能指针
动态大小数组容器
数据库抽象接口层
long int64_t
64位有符号整数类型
float float32_t
32位单精度浮点数类型
unsigned long uint64_t
64位无符号整数类型
long double decimal_t
扩展精度浮点数类型
unsigned char uint8_t
8位无符号整数类型
int int32_t
32位有符号整数类型
double float64_t
64位双精度浮点数类型
short int16_t
16位有符号整数类型
sqlite_cleanup_action
SQLite语句清理方式
@ finalize
调用sqlite3_finalize释放语句(用于普通查询)
@ reset
调用sqlite3_reset重置语句(用于预处理语句复用)
basic_string_view< char > string_view
字符字符串视图
size_t size_type
大小类型
关系型数据库结果集抽象基类
virtual datetime get_datetime(size_type n) const =0
日期时间类型
size_type column_count() const noexcept override
获取结果集列数
uint64_t get_bit(size_type n) const noexcept override
获取BIT位字段值
int64_t get_int64(size_type n) const override
获取64位整数值
bool get_bool(size_type n) const override
获取布尔值
vector< char > get_blob(size_type n) const override
获取BLOB二进制数据
time get_time(size_type n) const override
获取时间值
datetime get_datetime(size_type n) const override
获取日期时间值
float32_t get_float32(size_type n) const override
获取32位浮点值
sqlite_result()
默认构造函数
decimal_t get_decimal(size_type n) const override
获取十进制值
const vector< int > & column_types() const noexcept
获取列类型列表
string_view get(size_type n) const noexcept override
获取字符串值
column_meta column_metadata(size_type n) const override
获取列元数据
~sqlite_result() override
析构函数
size_type row_count() const noexcept override
获取结果集行数
bool empty() const noexcept override
检查结果集是否为空
sqlite_result(::sqlite3_stmt *statement, sqlite_cleanup_action cleanup)
构造函数(带清理方式)
sqlite_result(::sqlite3_stmt *statement)
构造函数
timestamp get_timestamp(size_type n) const override
获取时间戳值
const vector< string_view > & column_names() const noexcept override
获取列名列表
bool next() noexcept override
移动到下一行
date get_date(size_type n) const override
获取日期值
float64_t get_float64(size_type n) const override
获取64位浮点值
int16_t get_int16(size_type n) const override
获取16位整数值
int32_t get_int32(size_type n) const override
获取32位整数值