00001 /* This is for emacs: -*-Mode: C++;-*- */ 00002 #if !defined(__INC_CONNECTION_H) 00003 #define __INC_CONNECTION_H 00004 00005 #include "gql++/warnable.h" 00006 #include "gql++/object.h" 00007 00011 namespace GQL { 00012 00013 class Statement; 00014 class PreparedStatement; 00015 class CallableStatement; 00016 class DatabaseMetaData; 00017 00022 class Connection : public Warnable 00023 { 00024 public: 00025 Connection() { } 00026 virtual ~Connection(); 00027 00029 virtual Statement *create_statement() = 0; 00030 00032 virtual PreparedStatement *prepare_statement(const std::string& sql) = 0; 00033 00035 virtual CallableStatement *prepare_call(const std::string& sql) = 0; 00036 00038 virtual void commit() = 0; 00039 00041 virtual bool get_auto_commit() const = 0; 00042 00044 virtual void set_auto_commit(bool auto_commit = true) = 0; 00045 00047 virtual void rollback() = 0; 00048 00049 virtual std::string get_catalog() const = 0; 00050 00052 virtual std::string native_sql(const std::string& sql) const = 0; 00053 00054 virtual DatabaseMetaData *get_meta_data() = 0; 00055 00056 virtual void set_read_only(bool read_only = true) = 0; 00057 virtual bool is_read_only() const = 0; 00058 00059 virtual SQLObject *create_object(); 00060 00061 virtual SQLObject *create_blob(); 00062 virtual void destroy_blob(SQLObject *blob); 00063 }; 00064 00065 } 00066 00067 #endif