MCPcopy Create free account
hub / github.com/apache/nifi-minifi-cpp / SQLiteStatement

Class SQLiteStatement

extensions/sqlite/SQLiteConnection.h:34–216  ·  view source on GitHub ↗

* RAII wrapper for a sqlite3 prepared statement */

Source from the content-addressed store, hash-verified

32 * RAII wrapper for a sqlite3 prepared statement
33 */
34class SQLiteStatement {
35 public:
36 SQLiteStatement(sqlite3 *db, const std::string &sql)
37 : logger_(logging::LoggerFactory<SQLiteConnection>::getLogger()) {
38 if (sqlite3_prepare_v3(db, sql.c_str(), sql.size(), 0, &stmt_, nullptr)) {
39 std::stringstream err_msg;
40 err_msg << "Failed to create prepared statement: ";
41 err_msg << sql;
42 err_msg << " because ";
43 err_msg << sqlite3_errmsg(db);
44 throw std::runtime_error(err_msg.str());
45 }
46
47 if (!stmt_) {
48 std::stringstream err_msg;
49 err_msg << "Failed to create prepared statement: ";
50 err_msg << sql;
51 err_msg << " because statement was NULL";
52 throw std::runtime_error(err_msg.str());
53 }
54
55 db_ = db;
56 }
57
58 ~SQLiteStatement() {
59 sqlite3_finalize(stmt_);
60 }
61
62 void bind_text(int pos, const std::string &text) {
63 if (sqlite3_bind_text(stmt_, pos, text.c_str(), text.size(), SQLITE_TRANSIENT)) {
64 std::stringstream err_msg;
65 err_msg << "Failed to bind text parameter"
66 << pos
67 << ": "
68 << text
69 << " because "
70 << sqlite3_errmsg(db_);
71 throw std::runtime_error(err_msg.str());
72 }
73 }
74
75 void bind_int64(int pos, uint64_t val) {
76 if (sqlite3_bind_int64(stmt_, pos, val)) {
77 std::stringstream err_msg;
78 err_msg << "Failed to bind int64 parameter"
79 << pos
80 << ": "
81 << val
82 << " because "
83 << sqlite3_errmsg(db_);
84 throw std::runtime_error(err_msg.str());
85 }
86 }
87
88 void bind_double(int pos, double val) {
89 if (sqlite3_bind_double(stmt_, pos, val)) {
90 std::stringstream err_msg;
91 err_msg << "Failed to bind double parameter"

Callers 1

prepareMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected