diff --git a/rdbms/OcciStmt.cpp b/rdbms/OcciStmt.cpp index 602b0fc7fcb4eac28cbd191e17c3acbf51458000..1306ceab62632d2c20bba91f5d9f24e535cc9abf 100644 --- a/rdbms/OcciStmt.cpp +++ b/rdbms/OcciStmt.cpp @@ -113,7 +113,7 @@ void OcciStmt::bindUint64(const std::string ¶mName, const uint64_t paramValu //------------------------------------------------------------------------------ void OcciStmt::bindOptionalUint64(const std::string ¶mName, const optional<uint64_t> ¶mValue) { try { - const unsigned paramIdx = m_paramNameToIdx.getIdx(paramName); + const unsigned paramIdx = getParamIdx(paramName); if(paramValue) { // Bind integer as a string in order to support 64-bit integers m_stmt->setString(paramIdx, std::to_string(paramValue.value())); @@ -150,7 +150,7 @@ void OcciStmt::bindOptionalString(const std::string ¶mName, const optional<s " An optional string parameter should either have a non-empty string value or no value at all."); } - const unsigned paramIdx = m_paramNameToIdx.getIdx(paramName); + const unsigned paramIdx = getParamIdx(paramName); if(paramValue) { m_stmt->setString(paramIdx, paramValue.value()); } else { diff --git a/rdbms/SqliteStmt.cpp b/rdbms/SqliteStmt.cpp index 99f257d462e70d2ccff566fb8c531c954abaf810..d270afe0d86df1d7490e8f3d457abb0e50421bc3 100644 --- a/rdbms/SqliteStmt.cpp +++ b/rdbms/SqliteStmt.cpp @@ -152,7 +152,7 @@ void SqliteStmt::bindUint64(const std::string ¶mName, const uint64_t paramVa //------------------------------------------------------------------------------ void SqliteStmt::bindOptionalUint64(const std::string ¶mName, const optional<uint64_t> ¶mValue) { try { - const unsigned int paramIdx = m_paramNameToIdx.getIdx(paramName); + const unsigned int paramIdx = getParamIdx(paramName); int bindRc = 0; if(paramValue) { bindRc = sqlite3_bind_int64(m_stmt, paramIdx, (sqlite3_int64) paramValue.value()); @@ -188,7 +188,7 @@ void SqliteStmt::bindOptionalString(const std::string ¶mName, const optional throw exception::Exception(std::string("Optional string parameter ") + paramName + " is an empty string. " " An optional string parameter should either have a non-empty string value or no value at all."); } - const unsigned int paramIdx = m_paramNameToIdx.getIdx(paramName); + const unsigned int paramIdx = getParamIdx(paramName); int bindRc = 0; if(paramValue) { bindRc = sqlite3_bind_text(m_stmt, paramIdx, paramValue.value().c_str(), -1, SQLITE_TRANSIENT); diff --git a/rdbms/Stmt.cpp b/rdbms/Stmt.cpp index 83ed0aeb7f9fe9c6a8d3e4828bc329de08072017..00a4e4f17b2a98befb262422b31fe99db4694d7e 100644 --- a/rdbms/Stmt.cpp +++ b/rdbms/Stmt.cpp @@ -26,8 +26,8 @@ namespace rdbms { //------------------------------------------------------------------------------ Stmt::Stmt(const std::string &sql, const AutocommitMode autocommitMode): m_sql(sql), - m_paramNameToIdx(sql), - m_autoCommitMode(autocommitMode) { + m_autoCommitMode(autocommitMode), + m_paramNameToIdx(sql) { } //------------------------------------------------------------------------------ @@ -43,6 +43,13 @@ const std::string &Stmt::getSql() const { return m_sql; } +//------------------------------------------------------------------------------ +// getParamIdx +//------------------------------------------------------------------------------ +uint32_t Stmt::getParamIdx(const std::string ¶mName) const { + return m_paramNameToIdx.getIdx(paramName); +} + //------------------------------------------------------------------------------ // getSqlForException //------------------------------------------------------------------------------ diff --git a/rdbms/Stmt.hpp b/rdbms/Stmt.hpp index 3bbb90256b37d6f599b2f6c96d54bfa55322a004..fb65179c92224f6f79b24e1a8255e9fd4713c526 100644 --- a/rdbms/Stmt.hpp +++ b/rdbms/Stmt.hpp @@ -95,6 +95,14 @@ public: */ const std::string &getSql() const; + /** + * Returns the index of the specified SQL parameter. + * + * @param paramName The name of the SQL parameter. + * @return The index of the SQL parameter. + */ + uint32_t getParamIdx(const std::string ¶mName) const; + /** * Binds an SQL parameter. * @@ -179,11 +187,6 @@ protected: */ std::string m_sql; - /** - * Map from SQL parameter name to parameter index. - */ - ParamNameToIdx m_paramNameToIdx; - /** * The autocommit mode of the statement. */ @@ -206,6 +209,13 @@ protected: */ std::string getSqlForException() const; +private: + + /** + * Map from SQL parameter name to parameter index. + */ + ParamNameToIdx m_paramNameToIdx; + }; // class Stmt } // namespace rdbms