From: Peter van Dijk Date: Fri, 11 Nov 2016 18:21:17 +0000 (+0100) Subject: actually prepare statements X-Git-Tag: auth-4.0.2~13^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ecbf02253882e031e4b4d4929cfb80ac0b03778;p=pdns actually prepare statements --- diff --git a/modules/godbcbackend/sodbc.cc b/modules/godbcbackend/sodbc.cc index 084be297d..c23c77c11 100644 --- a/modules/godbcbackend/sodbc.cc +++ b/modules/godbcbackend/sodbc.cc @@ -90,6 +90,7 @@ public: vector d_req_bind; SSqlStatement* bind(const string& name, ODBCParam& p) { + prepareStatement(); d_req_bind.push_back(p); SQLRETURN result = SQLBindParameter( d_statement, // StatementHandle, @@ -109,15 +110,16 @@ public: return this; } - SSqlStatement* bind(const string& name, bool value) { return bind(name, (uint32_t)value); } + SSqlStatement* bind(const string& name, bool value) { prepareStatement(); return bind(name, (uint32_t)value); } - SSqlStatement* bind(const string& name, long value) { return bind(name, (unsigned long)value); } + SSqlStatement* bind(const string& name, long value) { prepareStatement(); return bind(name, (unsigned long)value); } - SSqlStatement* bind(const string& name, int value) { return bind(name, (uint32_t)value); } + SSqlStatement* bind(const string& name, int value) { prepareStatement(); return bind(name, (uint32_t)value); } - SSqlStatement* bind(const string& name, long long value) { return bind(name, (unsigned long long)value); } + SSqlStatement* bind(const string& name, long long value) { prepareStatement(); return bind(name, (unsigned long long)value); } SSqlStatement* bind(const string& name, uint32_t value) { + prepareStatement(); ODBCParam p; p.ParameterValuePtr = new UDWORD {value}; p.LenPtr = new SQLLEN {sizeof(UDWORD)}; @@ -127,6 +129,7 @@ public: } SSqlStatement* bind(const string& name, unsigned long value) { + prepareStatement(); ODBCParam p; p.ParameterValuePtr = new ULONG {value}; p.LenPtr = new SQLLEN {sizeof(ULONG)}; @@ -136,6 +139,7 @@ public: } SSqlStatement* bind(const string& name, unsigned long long value) { + prepareStatement(); ODBCParam p; p.ParameterValuePtr = new unsigned long long {value}; p.LenPtr = new SQLLEN {sizeof(unsigned long long)}; @@ -149,7 +153,7 @@ public: // cerr<<"asked to bind string "< (d_parnum+1)) throw SSqlException("Trying to bind too many parameters."); - + prepareStatement(); ODBCParam p; p.ParameterValuePtr = (char*) new char[value.size()+1]; @@ -166,6 +170,7 @@ public: SSqlStatement* bindNull(const string& name) { if(d_req_bind.size() > (d_parnum+1)) throw SSqlException("Trying to bind too many parameters."); + prepareStatement(); ODBCParam p; p.ParameterValuePtr = NULL; @@ -179,6 +184,7 @@ public: SSqlStatement* execute() { + prepareStatement(); SQLRETURN result; // cerr<<"execute("<