diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-04-30 00:41:36 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-04-30 00:41:36 +0100 |
commit | e7cd1ed2b4b13076073538d72d2338e978dda743 (patch) | |
tree | 1ffdccee7d97d2f748fa66e21d8371e51f99f62a | |
parent | Fix connection in test (diff) | |
download | icetray-e7cd1ed2b4b13076073538d72d2338e978dda743.tar.bz2 icetray-e7cd1ed2b4b13076073538d72d2338e978dda743.tar.xz icetray-e7cd1ed2b4b13076073538d72d2338e978dda743.zip |
Tidy up and provide improved variable/SQL binding
-rw-r--r-- | icetray/icetray/abstractDatabaseClient.cpp | 39 |
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 *) |