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