00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _TMWSERV_DATA_PROVIDER_H_
00022 #define _TMWSERV_DATA_PROVIDER_H_
00023
00024
00025 #include <string>
00026 #include <stdexcept>
00027
00028 #include "recordset.h"
00029
00030 namespace dal
00031 {
00032
00036 typedef enum {
00037 DB_BKEND_MYSQL,
00038 DB_BKEND_SQLITE,
00039 DB_BKEND_POSTGRESQL
00040 } DbBackends;
00041
00042
00056 class DataProvider
00057 {
00058 public:
00062 DataProvider(void)
00063 throw();
00064
00065
00069 virtual
00070 ~DataProvider(void)
00071 throw();
00072
00073
00079 bool
00080 isConnected(void) const
00081 throw();
00082
00083
00089 virtual DbBackends
00090 getDbBackend(void) const
00091 throw() = 0;
00092
00093
00102 virtual void connect(void) = 0;
00103
00104
00116 virtual const RecordSet&
00117 execSql(const std::string& sql,
00118 const bool refresh = false) = 0;
00119
00120
00126 virtual void
00127 disconnect(void) = 0;
00128
00132 std::string
00133 getDbName(void);
00134
00140 virtual void
00141 beginTransaction(void)
00142 throw (std::runtime_error) = 0;
00143
00149 virtual void
00150 commitTransaction(void)
00151 throw (std::runtime_error) = 0;
00152
00158 virtual void
00159 rollbackTransaction(void)
00160 throw (std::runtime_error) = 0;
00161
00168 virtual const unsigned int
00169 getModifiedRows(void) const = 0;
00170
00177 virtual const unsigned int
00178 getLastId(void) const = 0;
00179
00186 std::string& escapeSQL(std::string &sql);
00187
00188 protected:
00189 std::string mDbName;
00190 bool mIsConnected;
00191 std::string mSql;
00192 RecordSet mRecordSet;
00193 };
00194
00195
00196 }
00197
00198 #endif // _TMWSERV_DATA_PROVIDER_H_