ROOT logo
// @(#)root/odbc:$Id$
// Author: Sergey Linev   6/02/2006

/*************************************************************************
 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TODBCServer
#define ROOT_TODBCServer

#ifndef ROOT_TSQLServer
#include "TSQLServer.h"
#endif

#ifdef __CINT__
typedef void * SQLHENV;
typedef void * SQLHDBC;
typedef short  SQLRETURN;
#else
#ifdef WIN32
#include "windows.h"
#endif
#include <sql.h>
#endif

class TList;

class TODBCServer : public TSQLServer {

private:
   SQLHENV   fHenv;
   SQLHDBC   fHdbc;
   TString   fServerInfo;        // string with DBMS name and version like MySQL 4.1.11 or Oracle 10.01.0030
   TString   fUserId;

   Bool_t ExtractErrors(SQLRETURN retcode, const char* method);

   Bool_t EndTransaction(Bool_t commit);

   static TList* ListData(Bool_t isdrivers);

public:
   TODBCServer(const char* db, const char *uid, const char *pw);
   virtual ~TODBCServer();

   static TList* GetDrivers();
   static void PrintDrivers();
   static TList* GetDataSources();
   static void PrintDataSources();

   void        Close(Option_t *opt="");
   TSQLResult *Query(const char *sql);
   Bool_t      Exec(const char* sql);
   TSQLStatement *Statement(const char *sql, Int_t = 100);
   Bool_t      HasStatement() const { return kTRUE; }
   Int_t       SelectDataBase(const char *dbname);
   TSQLResult *GetDataBases(const char *wild = 0);
   TSQLResult *GetTables(const char *dbname, const char *wild = 0);
   TList      *GetTablesList(const char* wild = 0);
   TSQLTableInfo* GetTableInfo(const char* tablename);
   TSQLResult *GetColumns(const char *dbname, const char *table, const char *wild = 0);
   Int_t       GetMaxIdentifierLength();
   Int_t       CreateDataBase(const char *dbname);
   Int_t       DropDataBase(const char *dbname);
   Int_t       Reload();
   Int_t       Shutdown();
   const char *ServerInfo();

   Bool_t      StartTransaction();
   Bool_t      Commit();
   Bool_t      Rollback();

   ClassDef(TODBCServer,0)  // Connection to MySQL server
};

#endif
 TODBCServer.h:1
 TODBCServer.h:2
 TODBCServer.h:3
 TODBCServer.h:4
 TODBCServer.h:5
 TODBCServer.h:6
 TODBCServer.h:7
 TODBCServer.h:8
 TODBCServer.h:9
 TODBCServer.h:10
 TODBCServer.h:11
 TODBCServer.h:12
 TODBCServer.h:13
 TODBCServer.h:14
 TODBCServer.h:15
 TODBCServer.h:16
 TODBCServer.h:17
 TODBCServer.h:18
 TODBCServer.h:19
 TODBCServer.h:20
 TODBCServer.h:21
 TODBCServer.h:22
 TODBCServer.h:23
 TODBCServer.h:24
 TODBCServer.h:25
 TODBCServer.h:26
 TODBCServer.h:27
 TODBCServer.h:28
 TODBCServer.h:29
 TODBCServer.h:30
 TODBCServer.h:31
 TODBCServer.h:32
 TODBCServer.h:33
 TODBCServer.h:34
 TODBCServer.h:35
 TODBCServer.h:36
 TODBCServer.h:37
 TODBCServer.h:38
 TODBCServer.h:39
 TODBCServer.h:40
 TODBCServer.h:41
 TODBCServer.h:42
 TODBCServer.h:43
 TODBCServer.h:44
 TODBCServer.h:45
 TODBCServer.h:46
 TODBCServer.h:47
 TODBCServer.h:48
 TODBCServer.h:49
 TODBCServer.h:50
 TODBCServer.h:51
 TODBCServer.h:52
 TODBCServer.h:53
 TODBCServer.h:54
 TODBCServer.h:55
 TODBCServer.h:56
 TODBCServer.h:57
 TODBCServer.h:58
 TODBCServer.h:59
 TODBCServer.h:60
 TODBCServer.h:61
 TODBCServer.h:62
 TODBCServer.h:63
 TODBCServer.h:64
 TODBCServer.h:65
 TODBCServer.h:66
 TODBCServer.h:67
 TODBCServer.h:68
 TODBCServer.h:69
 TODBCServer.h:70
 TODBCServer.h:71
 TODBCServer.h:72
 TODBCServer.h:73
 TODBCServer.h:74
 TODBCServer.h:75
 TODBCServer.h:76
 TODBCServer.h:77
 TODBCServer.h:78
 TODBCServer.h:79
 TODBCServer.h:80