23 #ifndef NDN_SQLITE3_STATEMENT_HPP
24 #define NDN_SQLITE3_STATEMENT_HPP
27 #include <ndn-cpp/ndn-cpp-config.h>
28 #ifdef NDN_CPP_HAVE_SQLITE3
32 #include <ndn-cpp/util/blob.hpp>
40 class Sqlite3Statement
49 Sqlite3Statement(sqlite3* database,
const std::string& statement);
65 bind(
int index,
const char* value,
size_t size)
67 return sqlite3_bind_text(statement_, index, value, size, SQLITE_TRANSIENT);
78 bind(
int index,
const std::string& value)
80 return bind(index, value.c_str(), value.size());
94 bind(
int index,
const uint8_t* buf,
size_t size,
bool bufIsStatic =
false)
96 return sqlite3_bind_blob
97 (statement_, index, buf, size,
98 bufIsStatic ? SQLITE_STATIC : SQLITE_TRANSIENT);
111 bind(
int index,
const Blob& blob,
bool bufIsStatic =
false)
113 return bind(index, blob.buf(), blob.size(), bufIsStatic);
123 bind(
int index,
int integer)
125 return sqlite3_bind_int(statement_, index, integer);
134 getString(
int column)
137 (reinterpret_cast<const char*>(sqlite3_column_text(statement_, column)),
138 sqlite3_column_bytes(statement_, column));
147 getInt(
int column) {
return sqlite3_column_int(statement_, column); }
157 return static_cast<const uint8_t*
>(sqlite3_column_blob(statement_, column));
166 getSize(
int column) {
return sqlite3_column_bytes(statement_, column); }
174 getBlob(
int column) {
return Blob(getBuf(column), getSize(column)); }
181 step() {
return sqlite3_step(statement_); }
185 Sqlite3Statement(
const Sqlite3Statement& other);
186 Sqlite3Statement& operator=(
const Sqlite3Statement& other);
188 sqlite3_stmt* statement_;
193 #endif // NDN_CPP_HAVE_SQLITE3