-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathc_sql.h
More file actions
72 lines (66 loc) · 2.02 KB
/
c_sql.h
File metadata and controls
72 lines (66 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
// Created by liuping on 2019/7/21.
//
#pragma once
#include <memory>
#include <string>
#include "sql_handler.h"
#include "mysql/mysql.h"
class CSql : public ColumnIndexSqlHandler {
MYSQL &mysql_;
std::shared_ptr<MYSQL_RES> res;
MYSQL_ROW row;
public:
CSql(MYSQL &mysql) : mysql_(mysql) {}
virtual void ExecuteQuery(const std::string &sql) {
auto ret = mysql_query(&mysql_, sql.c_str());
if (!ret) {
res = std::shared_ptr<MYSQL_RES>(mysql_store_result(&mysql_), mysql_free_result);
}
};
virtual int32_t ExecuteUpdate(const std::string &sql) {
auto ret = mysql_query(&mysql_, sql.c_str());
if (!ret) {
return 0;
}
return mysql_affected_rows(&mysql_);
};
virtual bool Next() {
if (res.get() == nullptr) {
return false;
}
row = mysql_fetch_row(res.get());
if (row) {
return true;
} else {
return false;
}
};
virtual size_t GetFetchSize() {
return mysql_num_fields(res.get());
};
virtual size_t GetRow() {
return mysql_num_rows(res.get());
};
virtual bool GetBoolean(uint32_t column_index) const {
return std::stoi(row[column_index - 1]);
};
virtual long double GetDouble(uint32_t column_index) const {
return std::stold(row[column_index - 1]);
};
virtual int32_t GetInt(uint32_t column_index) const {
return std::stoi(row[column_index - 1]);
};
virtual uint32_t GetUInt(uint32_t column_index) const {
return std::stoul(row[column_index - 1]);
};
virtual int64_t GetInt64(uint32_t column_index) const {
return std::stol(row[column_index - 1]);
};
virtual uint64_t GetUInt64(uint32_t column_index) const {
return std::stoull(row[column_index - 1]);
};
virtual std::string GetString(uint32_t column_index) const {
return std::string(row[column_index - 1]);
};
};