From c8f303cd304e8fc08c726a03b95d51e998cd21bb Mon Sep 17 00:00:00 2001 From: randomdan Date: Tue, 30 Nov 2010 21:03:08 +0000 Subject: Support binding null to an SQL command parameter Bind null for missing values for SQL merge data --- libodbcpp/command.h | 2 ++ libodbcpp/param.cpp | 6 ++++++ libodbcpp/param.h | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/libodbcpp/command.h b/libodbcpp/command.h index 0517afd..1bc9f6d 100644 --- a/libodbcpp/command.h +++ b/libodbcpp/command.h @@ -29,6 +29,8 @@ namespace ODBC { void bindParamT(unsigned int i, const SQL_TIMESTAMP_STRUCT &); void bindParamT(unsigned int i, time_t); + void bindNull(unsigned int i); + const std::string sql; protected: friend class Param; diff --git a/libodbcpp/param.cpp b/libodbcpp/param.cpp index 9ccb7c9..91fc9e8 100644 --- a/libodbcpp/param.cpp +++ b/libodbcpp/param.cpp @@ -79,6 +79,12 @@ SIMPLEBINDER(const struct tm *, TimeStampParam, T); SIMPLEBINDER(const SQL_TIMESTAMP_STRUCT &, TimeStampParam, T); SIMPLEBINDER(time_t, TimeStampParam, T); +void +ODBC::Command::bindNull(unsigned int i) +{ + makeParam(i)->bind(); +} + void ODBC::GlibUstringParam::operator=(Glib::ustring const & d) { diff --git a/libodbcpp/param.h b/libodbcpp/param.h index f845a49..0009956 100644 --- a/libodbcpp/param.h +++ b/libodbcpp/param.h @@ -94,6 +94,16 @@ namespace ODBC { protected: SQL_TIMESTAMP_STRUCT data; }; + class NullParam : public Param { + public: + NullParam() : Param() { } + NullParam(Command * c, unsigned int i) : Param(c, i) { bindLen = SQL_NULL_DATA; } + virtual SQLSMALLINT ctype() const { return SQL_C_LONG; } + virtual SQLSMALLINT stype() const { return SQL_C_LONG; } + virtual SQLINTEGER size() const { return 0; } + virtual SQLINTEGER dp() const { return 0; } + virtual const void * dataAddress() const { return NULL; } + }; } #endif -- cgit v1.2.3