summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libodbcpp/column.cpp53
-rw-r--r--libodbcpp/column.h4
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;
};
}