acl  3.5.3.0
sqlite_cursor.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/string.hpp"
4 #include "db_cursor.hpp"
5 
6 #if !defined(ACL_DB_DISABLE)
7 
8 struct sqlite3_stmt;
9 
10 namespace acl
11 {
12 
13 class db_row;
14 class db_sqlite;
15 class dbuf_guard;
16 
17 class sqlite_cursor : public db_cursor
18 {
19 public:
20  /**
21  * 构造方法
22  * @param q {query&} SQL 查询对象,在构造方法内会首先将其转为 Sql 字符串
23  */
24  sqlite_cursor(query& q);
25  ~sqlite_cursor(void);
26 
27  /**
28  * 获得查询 SQL 语句
29  * @return {const string&}
30  */
31  const string& get_sql(void) const
32  {
33  return sql_;
34  }
35 
36  /**
37  * 在遍历查询结构集时,每次查询后可通过本方法获得结果行
38  * @return {db_row*}
39  */
40  db_row* get_row(void) const
41  {
42  return row_;
43  }
44 
45  /**
46  * 由 db_sqlite 类调用来初始化 names_ 字段名
47  * @param name {const char*} 数据表列名
48  */
49  void add_column_name(const char* name);
50 
51  /**
52  * 添加列值
53  * @param n {long long}
54  */
55  void add_column_value(long long n);
56 
57  /**
58  * 添加列值
59  * @param n {double}
60  */
61  void add_column_value(double n);
62 
63  /**
64  * 添加列值
65  * @param s {cont char*} 该参数的生命周期由 stmt_ 决定
66  */
67  void add_column_value(const char* s);
68 
69  /**
70  * 创建行记录对象,用来存放查询结果行
71  */
72  void create_row(void);
73 
74  /**
75  * 在遍历过程中,db_sqlite::next 方法会首先调用本方法清除上次的查询结果
76  */
77  void clear(void);
78 
79 private:
80  friend class db_sqlite;
81 
82  typedef int (*free_sqlite3_stmt_fn)(sqlite3_stmt*);
83 
84  string sql_;
85  sqlite3_stmt* stmt_;
86  free_sqlite3_stmt_fn free_callback;
87 
88  // 数据表字段名
89  std::vector<const char*> names_;
90 
91  dbuf_guard* dbuf_; // 内存分配器
92  db_row* row_; // 对于查询语句而言,用来存储结果
93 };
94 
95 }
96 
97 #endif // !defined(ACL_DB_DISABLE)
HTTP_API void const char * name
Definition: lib_http.h:620
void create_row(void)
void add_column_value(long long n)
const string & get_sql(void) const
sqlite_cursor(query &q)
db_row * get_row(void) const
void add_column_name(const char *name)
struct sqlite3_stmt sqlite3_stmt
Definition: db_sqlite.hpp:9