summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-04-30 00:41:36 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2016-04-30 00:41:36 +0100
commite7cd1ed2b4b13076073538d72d2338e978dda743 (patch)
tree1ffdccee7d97d2f748fa66e21d8371e51f99f62a
parentFix connection in test (diff)
downloadicetray-e7cd1ed2b4b13076073538d72d2338e978dda743.tar.bz2
icetray-e7cd1ed2b4b13076073538d72d2338e978dda743.tar.xz
icetray-e7cd1ed2b4b13076073538d72d2338e978dda743.zip
Tidy up and provide improved variable/SQL binding
-rw-r--r--icetray/icetray/abstractDatabaseClient.cpp39
1 files changed, 27 insertions, 12 deletions
diff --git a/icetray/icetray/abstractDatabaseClient.cpp b/icetray/icetray/abstractDatabaseClient.cpp
index e5e3026..e18045b 100644
--- a/icetray/icetray/abstractDatabaseClient.cpp
+++ b/icetray/icetray/abstractDatabaseClient.cpp
@@ -1,4 +1,6 @@
#include "abstractDatabaseClient.h"
+#include "Ice/Config.h"
+#include "IceUtil/Optional.h"
namespace IceTray {
AbstractDatabaseClient::AbstractDatabaseClient(DatabasePoolPtr d) :
@@ -6,19 +8,32 @@ namespace IceTray {
{
}
- template<>
- void
- AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const std::string & p)
- {
- cmd->bindParamS(o, p);
- }
-
- template<>
- void
- AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const int & p)
- {
- cmd->bindParamI(o, p);
+#define PARAMBINDER(T, bindFunc) \
+ template<> \
+ void \
+ AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const T & p) \
+ { \
+ cmd->bindFunc(o, p); \
+ } \
+ template<> \
+ void \
+ AbstractDatabaseClient::bind1(int o, DB::Command * cmd, const IceUtil::Optional<T> & p) \
+ { \
+ if (p) { \
+ cmd->bindFunc(o, *p); \
+ } \
+ else { \
+ cmd->bindNull(o); \
+ } \
}
+ PARAMBINDER(std::string, bindParamS);
+ PARAMBINDER(Ice::Byte, bindParamI);
+ PARAMBINDER(Ice::Short, bindParamI);
+ PARAMBINDER(Ice::Int, bindParamI);
+ PARAMBINDER(Ice::Long, bindParamI);
+ PARAMBINDER(Ice::Float, bindParamF);
+ PARAMBINDER(Ice::Double, bindParamF);
+ PARAMBINDER(bool, bindParamB);
void
AbstractDatabaseClient::bind(int, DB::Command *)