00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_DB_DBCONNECTION_ODBC_
00020 #define _SWORD_DB_DBCONNECTION_ODBC_
00021
00022
00023 #ifdef HAVE_DB_ODBC
00024
00025 #include "sword/db.DbConnection.h"
00026 #include <sql.h>
00027 #include <sqlext.h>
00028
00029 #define SQLERROR(r) (r!=SQL_SUCCESS && r!=SQL_SUCCESS_WITH_INFO)
00030
00031 namespace sword {
00032
00033 class SWORDDECL DbConnection_ODBC : public DbConnection {
00034 friend class DbConnection;
00035 friend class DbQuery_ODBC;
00036
00037 public:
00038 virtual ~DbConnection_ODBC();
00039
00040
00041 virtual void open(const std::string& parameters);
00042 virtual void close();
00043 virtual PDbQuery query();
00044 virtual void begin();
00045 virtual void commit();
00046 virtual void rollback();
00047
00048 private:
00049 DbConnection_ODBC(const std::string& name);
00050
00051 bool active_;
00052 SQLHENV dbe_;
00053 SQLHDBC dbc_;
00054
00055 void reportError_(const std::string& message, SQLSMALLINT handleType, SQLHANDLE handle);
00056 void autoCommit_(bool on);
00057 };
00058
00059 }
00060
00061 #endif // HAVE_DB_ODBC
00062
00063 #endif // _SWORD_DB_DBCONNECTION_ODBC_