-
Notifications
You must be signed in to change notification settings - Fork 0
/
resultset.cc
95 lines (77 loc) · 1.81 KB
/
resultset.cc
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* vim:set ts=2 sw=2 et cindent: */
/*
* Copyright (c) 2011 William Lima <wlima@primate.com.br>
* All rights reserved.
*/
#include "dolphinconn/resultset.h"
#include <cstdlib>
namespace dolphinconn {
ResultSet::ResultSet(Connection* connection, MYSQL_RES* res)
: connection_(connection),
result_(res) {
}
ResultSet::~ResultSet() {
close();
}
bool ResultSet::step() {
if (!is_valid())
return false;
row_ = mysql_fetch_row(result_);
return row_ != NULL;
}
void ResultSet::close() {
if (is_valid()) {
mysql_free_result(result_);
result_ = NULL;
}
connection_ = NULL;
}
uint64_t ResultSet::row_count() const {
if (!is_valid())
return 0;
return mysql_num_rows(result_);
}
int ResultSet::column_count() const {
if (!is_valid())
return 0;
return mysql_num_fields(result_);
}
bool ResultSet::column_bool(int col) const {
return !!column_int(col);
}
int ResultSet::column_int(int col) const {
if (!is_valid())
return 0;
return static_cast<int>(strtol(row_[col], NULL, 10));
}
uint32_t ResultSet::column_uint(int col) const {
if (!is_valid())
return 0;
return static_cast<uint32_t>(strtoul(row_[col], NULL, 10));
}
int64_t ResultSet::column_int64(int col) const {
if (!is_valid())
return 0;
return strtoll(row_[col], NULL, 10);
}
uint64_t ResultSet::column_uint64(int col) const {
if (!is_valid())
return 0;
return strtoull(row_[col], NULL, 10);
}
double ResultSet::column_double(int col) const {
if (!is_valid())
return 0;
return strtod(row_[col], NULL);
}
std::string ResultSet::column_string(int col) const {
if (!is_valid())
return "";
const char* str = row_[col];
size_t len = mysql_fetch_lengths(result_)[col];
std::string result;
if (str && len > 0)
result.assign(str, len);
return result;
}
} // namespace dolphinconn