NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
pgsql_connect.hpp
浏览该文件的文档.
1#ifndef NEFORCE_DATABASE_PGSQL_CONNECT_HPP__
2#define NEFORCE_DATABASE_PGSQL_CONNECT_HPP__
3
10
11#ifdef NEFORCE_SUPPORT_POSTGRESQL
12# include <libpq-fe.h>
14NEFORCE_BEGIN_NAMESPACE__
15
21
27
42class NEFORCE_API pgsql_connect final : public idb_tb_connect {
43private:
44 ::PGconn* link_ = nullptr;
45 mutable string last_error_{};
46 mutable uint32_t last_errno_ = 0;
47
48public:
52 pgsql_connect() = default;
53
59 ~pgsql_connect() override { close(); }
60
61 pgsql_connect(const pgsql_connect&) = delete;
62 pgsql_connect& operator=(const pgsql_connect&) = delete;
63
72 NEFORCE_NODISCARD bool connect(const db_config& config) override;
73
81 bool reconnect(const db_config& config) override;
82
86 void close() override;
87
93 bool set_character_set(const string& encoding) const override;
94
99 NEFORCE_NODISCARD string_view get_character_set() const override;
100
105 NEFORCE_NODISCARD string_view get_error() const override { return last_error_.view(); }
106
111 NEFORCE_NODISCARD uint32_t get_errno() const override { return last_errno_; }
112
118 bool update(const string& sql) const override;
119
125 unique_ptr<idb_tb_result> query(const string& sql) const override;
126
132 unique_ptr<idb_prepared_statement> prepare_statement(const string& sql) const override;
133
138 NEFORCE_NODISCARD bool connected() const override;
139
144 NEFORCE_NODISCARD bool is_valid() const override { return connected(); }
145};
146
153class NEFORCE_API pgsql_factory final : public idb_factory {
154public:
159 explicit pgsql_factory(db_config config) :
160 idb_factory(_NEFORCE move(config)) {}
161
165 ~pgsql_factory() override = default;
166
172
178 idb_result* create_result(void* native_result) override;
179};
180 // PostgreSQL
182 // Database
184
185NEFORCE_END_NAMESPACE__
186#endif
187#endif // NEFORCE_DATABASE_PGSQL_CONNECT_HPP__
NEFORCE_NODISCARD constexpr basic_string_view view(const size_type off, size_type count=npos) const
获取子视图
idb_factory(db_config config)
构造函数
PostgreSQL数据库连接类
bool update(const string &sql) const override
执行非查询SQL语句
NEFORCE_NODISCARD uint32_t get_errno() const override
获取最后错误码
NEFORCE_NODISCARD bool is_valid() const override
检查连接是否有效
unique_ptr< idb_prepared_statement > prepare_statement(const string &sql) const override
创建预处理语句
unique_ptr< idb_tb_result > query(const string &sql) const override
执行查询SQL语句
void close() override
关闭数据库连接
bool set_character_set(const string &encoding) const override
设置字符集
NEFORCE_NODISCARD bool connect(const db_config &config) override
建立数据库连接
NEFORCE_NODISCARD string_view get_character_set() const override
获取当前字符集
NEFORCE_NODISCARD bool connected() const override
检查连接是否已建立
bool reconnect(const db_config &config) override
重新连接数据库
NEFORCE_NODISCARD string_view get_error() const override
获取最后错误信息
pgsql_connect()=default
默认构造函数
~pgsql_connect() override
析构函数
idb_result * create_result(void *native_result) override
创建PostgreSQL结果集对象
pgsql_factory(db_config config)
构造函数
idb_connect * create_connect() override
创建PostgreSQL连接对象
~pgsql_factory() override=default
析构函数
独占智能指针
数据库抽象接口层
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 bool connected() const =0
检查连接状态
virtual void close()=0
关闭连接
数据库结果集抽象基类
关系型数据库连接抽象基类