00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TSQLServer
00013 #define ROOT_TSQLServer
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef ROOT_TObject
00034 #include "TObject.h"
00035 #endif
00036 #ifndef ROOT_TString
00037 #include "TString.h"
00038 #endif
00039
00040 class TSQLResult;
00041 class TSQLStatement;
00042 class TSQLTableInfo;
00043 class TList;
00044
00045 class TSQLServer : public TObject {
00046
00047 protected:
00048 TString fType;
00049 TString fHost;
00050 TString fDB;
00051 Int_t fPort;
00052 Int_t fErrorCode;
00053 TString fErrorMsg;
00054 Bool_t fErrorOut;
00055
00056 TSQLServer()
00057 : fType(), fHost(), fDB(), fPort(-1), fErrorCode(0),
00058 fErrorMsg(), fErrorOut(kTRUE) { ClearError(); }
00059
00060 void ClearError();
00061 void SetError(Int_t code, const char* msg, const char* method = 0);
00062
00063 static const char* fgFloatFmt;
00064
00065 public:
00066 enum ESQLDataTypes {
00067 kSQL_NONE = -1,
00068 kSQL_CHAR = 1,
00069 kSQL_VARCHAR = 2,
00070 kSQL_INTEGER = 3,
00071 kSQL_FLOAT = 4,
00072 kSQL_DOUBLE = 5,
00073 kSQL_NUMERIC = 6,
00074 kSQL_BINARY = 7,
00075 kSQL_TIMESTAMP = 8
00076 };
00077
00078 virtual ~TSQLServer() { }
00079
00080 virtual void Close(Option_t *option="") = 0;
00081 virtual TSQLResult *Query(const char *sql) = 0;
00082 virtual Bool_t Exec(const char* sql);
00083 virtual TSQLStatement *Statement(const char*, Int_t = 100)
00084 { AbstractMethod("Statement"); return 0; }
00085 virtual Bool_t HasStatement() const { return kFALSE; }
00086 virtual Int_t SelectDataBase(const char *dbname) = 0;
00087 virtual TSQLResult *GetDataBases(const char *wild = 0) = 0;
00088 virtual TSQLResult *GetTables(const char *dbname, const char *wild = 0) = 0;
00089 virtual TList *GetTablesList(const char* wild = 0);
00090 virtual Bool_t HasTable(const char* tablename);
00091 virtual TSQLTableInfo *GetTableInfo(const char* tablename);
00092 virtual TSQLResult *GetColumns(const char *dbname, const char *table, const char *wild = 0) = 0;
00093 virtual Int_t GetMaxIdentifierLength() { return 20; }
00094 virtual Int_t CreateDataBase(const char *dbname) = 0;
00095 virtual Int_t DropDataBase(const char *dbname) = 0;
00096 virtual Int_t Reload() = 0;
00097 virtual Int_t Shutdown() = 0;
00098 virtual const char *ServerInfo() = 0;
00099 virtual Bool_t IsConnected() const { return fPort == -1 ? kFALSE : kTRUE; }
00100 const char *GetDBMS() const { return fType.Data(); }
00101 const char *GetDB() const { return fDB.Data(); }
00102 const char *GetHost() const { return fHost.Data(); }
00103 Int_t GetPort() const { return fPort; }
00104
00105 virtual Bool_t IsError() const { return GetErrorCode()!=0; }
00106 virtual Int_t GetErrorCode() const;
00107 virtual const char* GetErrorMsg() const;
00108 virtual void EnableErrorOutput(Bool_t on = kTRUE) { fErrorOut = on; }
00109
00110 virtual Bool_t StartTransaction();
00111 virtual Bool_t Commit();
00112 virtual Bool_t Rollback();
00113
00114 virtual Bool_t PingVerify() { return kFALSE; }
00115 virtual Int_t Ping() { return -9999; }
00116
00117 static TSQLServer *Connect(const char *db, const char *uid, const char *pw);
00118
00119 static void SetFloatFormat(const char* fmt = "%e");
00120 static const char* GetFloatFormat();
00121
00122 ClassDef(TSQLServer,0)
00123 };
00124
00125 #endif