Add Reset(), Clear() method for SQLStatement class
authorSangyoon Jang <jeremy.jang@samsung.com>
Tue, 26 Jun 2018 10:53:07 +0000 (19:53 +0900)
committer장상윤/Tizen Platform Lab(SR)/Engineer/삼성전자 <jeremy.jang@samsung.com>
Thu, 28 Jun 2018 06:49:43 +0000 (15:49 +0900)
- Reset() resets prepared statement object back to its initial state.
- Clear() clears all host parameters to null.

Change-Id: I91d7bb0e5a29bd23924bbd9bbf9cec9b9243dfb0
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/sql_statement.h
src/common/sqlite_statement.cc
src/common/sqlite_statement.h

index 35b09f200a08b207fa12a8af26142a14a83ed691..0ad7e5aaf6f4b56d6992ceaea3f22662f547fa2c 100644 (file)
@@ -30,6 +30,9 @@ class SQLStatement {
   virtual int GetColumnInt(int pos) const = 0;
   virtual std::string GetColumnString(int pos) const = 0;
 
+  virtual bool Reset() = 0;
+  virtual void Clear() = 0;
+
  protected:
   SQLConnection* sql_conn_;
 };
index c94267c0f1eef20d30f305fc61d801a6f4e151e9..d27133677ff56f8e49f33cb8a772182d4ff82780 100644 (file)
@@ -77,6 +77,19 @@ std::string SQLiteStatement::GetColumnString(int pos) const {
   return std::string(val);
 }
 
+bool SQLiteStatement::Reset() {
+  int r = sqlite3_reset(stmt_);
+  if (r != SQLITE_OK) {
+    LOG(ERROR) << "sqlite3_reset failed: " << GetErrorMessage();
+    return false;
+  }
+  return true;
+}
+
+void SQLiteStatement::Clear() {
+  sqlite3_clear_bindings(stmt_);
+}
+
 std::string SQLiteStatement::GetErrorMessage() const {
   return sqlite3_errmsg(sqlite3_db_handle(stmt_));
 }
index f80e0de3cabdbb372b1607521b8679b50391db21..5e5d1f1adce1df5ea9445bd7c4f8b16b0a48a0ab 100644 (file)
@@ -32,6 +32,9 @@ class SQLiteStatement final : public SQLStatement {
   int GetColumnInt(int pos) const override;
   std::string GetColumnString(int pos) const override;
 
+  bool Reset() override;
+  void Clear() override;
+
  private:
   std::string GetErrorMessage() const;