summaryrefslogtreecommitdiff
path: root/cpp/demo/Database/Oracle/occi/Util.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Database/Oracle/occi/Util.h')
-rw-r--r--cpp/demo/Database/Oracle/occi/Util.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/cpp/demo/Database/Oracle/occi/Util.h b/cpp/demo/Database/Oracle/occi/Util.h
new file mode 100644
index 00000000000..813e8f4f400
--- /dev/null
+++ b/cpp/demo/Database/Oracle/occi/Util.h
@@ -0,0 +1,73 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+#ifndef UTIL_H
+#define UTIL_H
+
+#include <occi.h>
+#include <string>
+
+//
+// Grabs a connection from a connection pool and ensures
+// it's properly released when the ConnectionHolder is destroyed
+//
+class ConnectionHolder : public IceUtil::Shared
+{
+public:
+
+ ConnectionHolder(oracle::occi::StatelessConnectionPool*);
+
+ oracle::occi::Connection* connection() const
+ {
+ return _con;
+ }
+
+ void commit();
+ void rollback();
+
+protected:
+ virtual ~ConnectionHolder();
+
+private:
+
+ oracle::occi::Connection* _con;
+ bool _txDone;
+ oracle::occi::StatelessConnectionPool* _pool;
+};
+
+typedef IceUtil::Handle<ConnectionHolder> ConnectionHolderPtr;
+
+//
+// Create a fresh exception-safe statement (typically on the stack)
+//
+class StatementHolder
+{
+public:
+ StatementHolder(oracle::occi::Connection*);
+ StatementHolder(const ConnectionHolderPtr&);
+ ~StatementHolder();
+
+ oracle::occi::Statement* statement() const
+ {
+ return _stmt;
+ }
+
+private:
+ oracle::occi::Connection* _con;
+ oracle::occi::Statement* _stmt;
+};
+
+
+//
+// Encode/decode a RefAny into a string
+//
+std::string encodeRef(const oracle::occi::RefAny&, oracle::occi::Environment*);
+oracle::occi::RefAny decodeRef(const std::string&, oracle::occi::Environment*v, oracle::occi::Connection*);
+
+#endif