NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
pgsql_prepared_statement.hpp
浏览该文件的文档.
1#ifndef NEFORCE_DATABASE_PGSQL_PREPARED_STATEMENT_HPP__
2#define NEFORCE_DATABASE_PGSQL_PREPARED_STATEMENT_HPP__
3
10
11#ifdef NEFORCE_SUPPORT_POSTGRESQL
12# include <libpq-fe.h>
14NEFORCE_BEGIN_NAMESPACE__
15
21
27
44class NEFORCE_API pgsql_prepared_statement final : public idb_prepared_statement {
45private:
46 struct pstmt_data {
47 vector<string> param_values{};
48 vector<const char*> param_ptrs{};
49 vector<int> param_lengths{};
50 vector<int> param_formats{};
51 };
52
53 ::PGconn* conn_ = nullptr;
54 string stmt_name_{};
55 string sql_{};
56 uint32_t param_count_ = 0;
58 vector<vector<char>> param_buffers_{};
59 string last_error_{};
60 uint32_t last_errno_ = 0;
61
62 void set_error(string error, uint32_t errno_val = 0) noexcept;
63
64public:
73 pgsql_prepared_statement(PGconn* conn, string sql);
74
81
86 NEFORCE_NODISCARD uint32_t param_count() const noexcept override { return param_count_; }
87
94 bool bind_param(uint32_t index, const string& value) override { return bind_param(index, value.view()); }
95
102 bool bind_param(uint32_t index, string_view value) override;
103
110 bool bind_param(uint32_t index, const char* value) override { return bind_param(index, string_view(value)); }
111
118 bool bind_param(uint32_t index, int32_t value) override;
119
126 bool bind_param(uint32_t index, int64_t value) override;
127
134 bool bind_param(uint32_t index, float64_t value) override;
135
144 bool bind_param(uint32_t index, cbyte_view value) override;
145
152 bool execute() override;
153
160 NEFORCE_NODISCARD unique_ptr<idb_prepared_result> execute_query() override;
161
166 NEFORCE_NODISCARD string_view get_error() const noexcept override { return last_error_.view(); }
167
172 NEFORCE_NODISCARD uint32_t get_errno() const noexcept override { return last_errno_; }
173};
174 // PostgreSQL
176 // Database
178
179NEFORCE_END_NAMESPACE__
180#endif
181#endif // NEFORCE_DATABASE_PGSQL_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
获取字符串视图
bool bind_param(uint32_t index, string_view value) override
绑定字符串视图参数
bool bind_param(uint32_t index, int64_t value) override
绑定64位整数参数
~pgsql_prepared_statement() override
析构函数
bool bind_param(uint32_t index, float64_t value) override
绑定浮点数参数
NEFORCE_NODISCARD unique_ptr< idb_prepared_result > execute_query() override
执行查询语句
bool execute() override
执行非查询语句
bool bind_param(uint32_t index, int32_t value) override
绑定32位整数参数
pgsql_prepared_statement(PGconn *conn, string sql)
构造函数
bool bind_param(uint32_t index, const string &value) override
绑定字符串参数
NEFORCE_NODISCARD uint32_t param_count() const noexcept override
获取参数数量
NEFORCE_NODISCARD uint32_t get_errno() const noexcept override
获取错误码
NEFORCE_NODISCARD string_view get_error() const noexcept override
获取错误信息
bool bind_param(uint32_t index, cbyte_view value) override
绑定二进制数据参数
bool bind_param(uint32_t index, const char *value) override
绑定C字符串参数
独占智能指针
动态大小数组容器
数据库抽象接口层
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
字符字符串视图
NEFORCE_CONSTEXPR20 unique_ptr< T > make_unique(Args &&... args)
创建unique_ptr
预处理语句抽象基类