]> granicus.if.org Git - pdns/commitdiff
actually prepare statements
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 11 Nov 2016 18:21:17 +0000 (19:21 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Mon, 14 Nov 2016 17:23:48 +0000 (18:23 +0100)
modules/godbcbackend/sodbc.cc

index 084be297d528814fa941ef18f6cb75c28a4a7c2d..c23c77c11c964ff89851d7cc299a1d7367958a0f 100644 (file)
@@ -90,6 +90,7 @@ public:
   vector<ODBCParam> 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 "<<value<<endl;
 
     if(d_req_bind.size() > (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("<<d_query<<")"<<endl;
     if (d_dolog) {