diff options
-rw-r--r-- | libodbcpp/column.cpp | 53 | ||||
-rw-r--r-- | libodbcpp/column.h | 4 |
2 files changed, 56 insertions, 1 deletions
diff --git a/libodbcpp/column.cpp b/libodbcpp/column.cpp index 0d0e6e2..14b12f8 100644 --- a/libodbcpp/column.cpp +++ b/libodbcpp/column.cpp @@ -1,3 +1,5 @@ +#include <stdio.h> +#include <stdlib.h> #include "column.h" #include "command.h" #include "error.h" @@ -67,5 +69,54 @@ namespace ODBC { REBIND(float, bindParamF) REBIND(TimeTypePair, bindParamT) REBIND(unsigned char *, bindParamS) -} + template <> + int + _Column<SQLDOUBLE>::writeToBuf(char ** buf, const char * fmt) const + { + return asprintf(buf, fmt, value); + } + template <> + int + _Column<SQLDOUBLE>::writeToBuf(char ** buf) const + { + return writeToBuf(buf, "%d"); + } + template <> + int + _Column<SQLINTEGER>::writeToBuf(char ** buf, const char * fmt) const + { + return asprintf(buf, fmt, value); + } + template <> + int + _Column<SQLINTEGER>::writeToBuf(char ** buf) const + { + return writeToBuf(buf, "%ld"); + } + template <> + int + _Column<SQLCHAR*>::writeToBuf(char ** buf, const char * fmt) const + { + return asprintf(buf, fmt, value); + } + template <> + int + _Column<SQLCHAR*>::writeToBuf(char ** buf) const + { + return writeToBuf(buf, "%s"); + } + template <> + int + _Column<TimeTypePair>::writeToBuf(char ** buf, const char * fmt) const + { + *buf = (char *)malloc(30); + return strftime(*buf, sizeof(buf), fmt, &value.c()); + } + template <> + int + _Column<TimeTypePair>::writeToBuf(char ** buf) const + { + return writeToBuf(buf, "%F %T"); + } +} diff --git a/libodbcpp/column.h b/libodbcpp/column.h index acc6904..616ca2d 100644 --- a/libodbcpp/column.h +++ b/libodbcpp/column.h @@ -22,6 +22,8 @@ namespace ODBC { operator String () const; operator const struct tm & () const; virtual void rebind(Command *, unsigned int col) const = 0; + virtual int writeToBuf(char ** buf) const = 0; + virtual int writeToBuf(char ** buf, const char * fmt) const = 0; const unsigned int colNo; const String name; @@ -35,6 +37,8 @@ namespace ODBC { _Column(String, unsigned int); ~_Column() {} void rebind(Command *, unsigned int col) const; + int writeToBuf(char ** buf) const; + int writeToBuf(char ** buf, const char * fmt) const; }; } |