diff options
author | randomdan <randomdan@localhost> | 2010-11-30 21:03:08 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2010-11-30 21:03:08 +0000 |
commit | c8f303cd304e8fc08c726a03b95d51e998cd21bb (patch) | |
tree | bd767395217aded8b2e6df5188705058cd5b0fba /libodbcpp | |
parent | Use proper ODBC SQL_SUCCEEDED macro, not SQL_SUCCESS comparison (diff) | |
download | libdbpp-odbc-c8f303cd304e8fc08c726a03b95d51e998cd21bb.tar.bz2 libdbpp-odbc-c8f303cd304e8fc08c726a03b95d51e998cd21bb.tar.xz libdbpp-odbc-c8f303cd304e8fc08c726a03b95d51e998cd21bb.zip |
Support binding null to an SQL command parameter
Bind null for missing values for SQL merge data
Diffstat (limited to 'libodbcpp')
-rw-r--r-- | libodbcpp/command.h | 2 | ||||
-rw-r--r-- | libodbcpp/param.cpp | 6 | ||||
-rw-r--r-- | libodbcpp/param.h | 10 |
3 files changed, 18 insertions, 0 deletions
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 @@ -80,6 +80,12 @@ SIMPLEBINDER(const SQL_TIMESTAMP_STRUCT &, TimeStampParam, T); SIMPLEBINDER(time_t, TimeStampParam, T); void +ODBC::Command::bindNull(unsigned int i) +{ + makeParam<NullParam>(i)->bind(); +} + +void ODBC::GlibUstringParam::operator=(Glib::ustring const & d) { const char * addr = data.data(); 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 |