From 1df33cc9d9a7804c78788d5717435ede44855ca0 Mon Sep 17 00:00:00 2001 From: randomdan Date: Fri, 11 Jun 2010 09:03:42 +0000 Subject: Use Glib::ustring in libodbcpp for data and std::string for non-data Add support for parameters in SqlViews Uses parameters to implement category browse and search --- libodbcpp/column.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'libodbcpp/column.cpp') diff --git a/libodbcpp/column.cpp b/libodbcpp/column.cpp index d4b6446..386cbfd 100644 --- a/libodbcpp/column.cpp +++ b/libodbcpp/column.cpp @@ -4,10 +4,10 @@ #include "command.h" #include "error.h" -ODBC::Column::Column(String n, unsigned int i) : +ODBC::Column::Column(const Glib::ustring & n, unsigned int i) : colNo(i), name(n), - fresh(false) + bindSize(0) { } @@ -15,6 +15,12 @@ ODBC::Column::~Column() { } +bool +ODBC::Column::isNull() const +{ + return (bindLen == SQL_NULL_DATA); +} + #define ODBC_DEFAULT_COLUMN_CAST(ctype, rtype) \ ODBC::Column::operator rtype() const { \ return (dynamic_cast& >(*this)).value; \ @@ -27,7 +33,9 @@ ODBC_DEFAULT_COLUMN_CAST(SQLINTEGER, int); ODBC_DEFAULT_COLUMN_CAST(SQLDOUBLE, double); ODBC_DEFAULT_COLUMN_CAST(SQLDOUBLE, float); ODBC_DEFAULT_COLUMN_CAST(SQLCHAR*, const unsigned char *); -ODBC_DEFAULT_COLUMN_CAST(SQLCHAR*, String); +ODBC::Column::operator Glib::ustring() const { + return Glib::ustring((const char *)((dynamic_cast& >(*this)).value)); +} ODBC::Column::operator std::string() const { return (const char*)((dynamic_cast& >(*this)).value); } @@ -65,7 +73,10 @@ namespace ODBC { REBIND(double, bindParamF) REBIND(float, bindParamF) REBIND(SQL_TIMESTAMP_STRUCT, bindParamT) - REBIND(unsigned char *, bindParamS) + template<> void _Column::rebind(Command * cmd, unsigned int col) const \ + { + cmd->bindParamS(col, (char *)value); + } template <> int -- cgit v1.2.3