From 486c0e793be486bba7035c54fbc31a11cbd31ee0 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 27 Feb 2009 14:02:00 +0000 Subject: [PATCH] ODBC connector (1st working version) git-svn-id: svn://ultimatepp.org/upp/trunk@908 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ODBC/ODBC.cpp | 391 +++++++++++++++++++++++++++---------- uppsrc/ODBC/ODBC.h | 8 +- uppsrc/OleDB/OleDB.cpp | 2 +- uppsrc/OleDB/OleDB.h | 2 +- uppsrc/OleDB/OleDBSchema.h | 8 +- 5 files changed, 300 insertions(+), 111 deletions(-) diff --git a/uppsrc/ODBC/ODBC.cpp b/uppsrc/ODBC/ODBC.cpp index e253cad40..1e20991f1 100644 --- a/uppsrc/ODBC/ODBC.cpp +++ b/uppsrc/ODBC/ODBC.cpp @@ -2,13 +2,63 @@ NAMESPACE_UPP +class ODBCConnection : public SqlConnection +{ +public: + ODBCConnection(ODBCSession *session); + virtual ~ODBCConnection(); + + void Clear(); + + virtual void SetParam(int i, const Value& r); + virtual bool Execute(); + virtual int GetRowsProcessed() const; + virtual bool Fetch(); + virtual void GetColumn(int i, Ref r) const; + virtual void Cancel(); + virtual SqlSession& GetSession() const { ASSERT(session); return *session; } + virtual String GetUser() const { ASSERT(session); return session->user; } + virtual String ToString() const; + virtual Value GetInsertedId() const; + +private: + friend class ODBCSession; + + ODBCSession *session; + struct Param { + int ctype; + int sqltype; + String data; + SQLLEN li; + }; + Array param, bparam; + String last_insert_table; + + int rowsprocessed; + Vector< Vector > number; + Vector< Vector > text; + Vector< Vector