Logo ROOT  
Reference Guide
TODBCStatement.h
Go to the documentation of this file.
1// @(#)root/odbc:$Id$
2// Author: Sergey Linev 6/02/2006
3
4/*************************************************************************
5 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TODBCStatement
13#define ROOT_TODBCStatement
14
15#include "TSQLStatement.h"
16
17
18#ifdef __CLING__
19typedef void * SQLHSTMT;
20typedef UShort_t SQLUSMALLINT;
21typedef UInt_t SQLUINTEGER;
22typedef Short_t SQLSMALLINT;
23typedef Short_t SQLRETURN;
24#else
25#ifdef WIN32
26#include "windows.h"
27#endif
28#include <sql.h>
29#endif
30
32
33protected:
34 #ifdef __CLING__
35 struct ODBCBufferRec_t;
36 #else
41 void *fBbuffer;
43 SQLLEN *fBlenarray;
46 };
47 #endif
48
49protected:
50 SQLHSTMT fHstmt;
54 Int_t fBufferLength; // number of entries for each parameter/column
55 Int_t fBufferCounter; // used to indicate position in buffers
56 SQLUSMALLINT *fStatusBuffer;
57 Int_t fWorkingMode; // 1 - setting parameters, 2 - reading results, 0 - unknown
58 SQLUINTEGER fNumParsProcessed; // contains number of parameters, affected by last operation
59 SQLUINTEGER fNumRowsFetched; // indicates number of fetched rows
60 ULong64_t fLastResultRow; // stores values of row number after last fetch operation
61
62 void *GetParAddr(Int_t npar, Int_t roottype = 0, Int_t length = 0);
63 long double ConvertToNumeric(Int_t npar);
64 const char *ConvertToString(Int_t npar);
65
66 Bool_t BindColumn(Int_t ncol, SQLSMALLINT sqltype, SQLUINTEGER size);
67 Bool_t BindParam(Int_t n, Int_t type, Int_t size = 1024);
68
69 Bool_t ExtractErrors(SQLRETURN retcode, const char* method);
70
71 void SetNumBuffers(Int_t isize, Int_t ilen);
72 void FreeBuffers();
73
74 Bool_t IsParSettMode() const { return fWorkingMode==1; }
75 Bool_t IsResultSet() const { return fWorkingMode==2; }
76
77public:
78 TODBCStatement(SQLHSTMT stmt, Int_t rowarrsize, Bool_t errout = kTRUE);
79 virtual ~TODBCStatement();
80
81 virtual void Close(Option_t * = "");
82
83 virtual Int_t GetBufferLength() const { return fBufferLength; }
84 virtual Int_t GetNumParameters();
85
86 virtual Bool_t SetNull(Int_t npar);
87 virtual Bool_t SetInt(Int_t npar, Int_t value);
88 virtual Bool_t SetUInt(Int_t npar, UInt_t value);
89 virtual Bool_t SetLong(Int_t npar, Long_t value);
90 virtual Bool_t SetLong64(Int_t npar, Long64_t value);
91 virtual Bool_t SetULong64(Int_t npar, ULong64_t value);
92 virtual Bool_t SetDouble(Int_t npar, Double_t value);
93 virtual Bool_t SetString(Int_t npar, const char* value, Int_t maxsize = 256);
94 virtual Bool_t SetBinary(Int_t npar, void* mem, Long_t size, Long_t maxsize = 0x1000);
95 virtual Bool_t SetDate(Int_t npar, Int_t year, Int_t month, Int_t day);
96 virtual Bool_t SetTime(Int_t npar, Int_t hour, Int_t min, Int_t sec);
97 virtual Bool_t SetDatime(Int_t npar, Int_t year, Int_t month, Int_t day, Int_t hour, Int_t min, Int_t sec);
99 virtual Bool_t SetTimestamp(Int_t npar, Int_t year, Int_t month, Int_t day, Int_t hour, Int_t min, Int_t sec, Int_t frac = 0);
100
101 virtual Bool_t NextIteration();
102
103 virtual Bool_t Process();
104 virtual Int_t GetNumAffectedRows();
105
106 virtual Bool_t StoreResult();
107 virtual Int_t GetNumFields();
108 virtual const char *GetFieldName(Int_t nfield);
109 virtual Bool_t NextResultRow();
110
111 virtual Bool_t IsNull(Int_t);
112 virtual Int_t GetInt(Int_t npar);
113 virtual UInt_t GetUInt(Int_t npar);
114 virtual Long_t GetLong(Int_t npar);
115 virtual Long64_t GetLong64(Int_t npar);
116 virtual ULong64_t GetULong64(Int_t npar);
117 virtual Double_t GetDouble(Int_t npar);
118 virtual const char *GetString(Int_t npar);
119 virtual Bool_t GetBinary(Int_t npar, void* &mem, Long_t& size);
120 virtual Bool_t GetDate(Int_t npar, Int_t& year, Int_t& month, Int_t& day);
121 virtual Bool_t GetTime(Int_t npar, Int_t& hour, Int_t& min, Int_t& sec);
122 virtual Bool_t GetDatime(Int_t npar, Int_t& year, Int_t& month, Int_t& day, Int_t& hour, Int_t& min, Int_t& sec);
124 virtual Bool_t GetTimestamp(Int_t npar, Int_t& year, Int_t& month, Int_t& day, Int_t& hour, Int_t& min, Int_t& sec, Int_t&);
125
126 ClassDef(TODBCStatement, 0); //ODBC implementation of TSQLStatement
127};
128
129#endif
unsigned short UShort_t
Definition: RtypesCore.h:36
int Int_t
Definition: RtypesCore.h:41
unsigned int UInt_t
Definition: RtypesCore.h:42
long Long_t
Definition: RtypesCore.h:50
bool Bool_t
Definition: RtypesCore.h:59
short Short_t
Definition: RtypesCore.h:35
double Double_t
Definition: RtypesCore.h:55
long long Long64_t
Definition: RtypesCore.h:69
unsigned long long ULong64_t
Definition: RtypesCore.h:70
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:326
int type
Definition: TGX11.cxx:120
void SetNumBuffers(Int_t isize, Int_t ilen)
set number of buffers
virtual Bool_t NextIteration()
run next iteration
virtual Bool_t SetDouble(Int_t npar, Double_t value)
set parameter as Double_t
virtual Bool_t GetDatime(Int_t npar, Int_t &year, Int_t &month, Int_t &day, Int_t &hour, Int_t &min, Int_t &sec)
return field value as date & time
void FreeBuffers()
Free allocated buffers.
virtual const char * GetString(Int_t npar)
get parameter as string
Bool_t BindParam(Int_t n, Int_t type, Int_t size=1024)
Bind query parameter with buffer. Creates buffer of appropriate type.
TODBCStatement(SQLHSTMT stmt, Int_t rowarrsize, Bool_t errout=kTRUE)
constructor
virtual UInt_t GetUInt(Int_t npar)
get parameter as unsigned integer
virtual Bool_t StoreResult()
Store result of statement processing.
Bool_t IsParSettMode() const
virtual Bool_t SetTimestamp(Int_t npar, Int_t year, Int_t month, Int_t day, Int_t hour, Int_t min, Int_t sec, Int_t frac=0)
set parameter value as timestamp
const char * ConvertToString(Int_t npar)
convert to string
virtual Bool_t SetDate(Int_t npar, Int_t year, Int_t month, Int_t day)
set parameter value as date
ULong64_t fLastResultRow
virtual Bool_t SetInt(Int_t npar, Int_t value)
set parameter as Int_t
virtual Bool_t GetTime(Int_t npar, Int_t &hour, Int_t &min, Int_t &sec)
return field value as time
long double ConvertToNumeric(Int_t npar)
convert to numeric type
virtual ~TODBCStatement()
destructor
virtual Long_t GetLong(Int_t npar)
get parameter as Long_t
virtual void Close(Option_t *="")
Close statement.
virtual Bool_t SetLong(Int_t npar, Long_t value)
set parameter as Long_t
virtual Long64_t GetLong64(Int_t npar)
get parameter as Long64_t
virtual Bool_t GetBinary(Int_t npar, void *&mem, Long_t &size)
return parameter as binary data
void * GetParAddr(Int_t npar, Int_t roottype=0, Int_t length=0)
Get parameter address.
virtual Bool_t SetUInt(Int_t npar, UInt_t value)
set parameter as UInt_t
virtual Int_t GetInt(Int_t npar)
get parameter as integer
Int_t fBufferPreferredSize
virtual Int_t GetNumFields()
return number of fields
virtual Bool_t SetLong64(Int_t npar, Long64_t value)
set parameter as Long64_t
virtual Int_t GetBufferLength() const
virtual Bool_t SetULong64(Int_t npar, ULong64_t value)
set parameter as ULong64_t
SQLUSMALLINT * fStatusBuffer
virtual Int_t GetNumParameters()
return number of parameters
virtual const char * GetFieldName(Int_t nfield)
return field name
virtual Bool_t SetDatime(Int_t npar, Int_t year, Int_t month, Int_t day, Int_t hour, Int_t min, Int_t sec)
set parameter value as date & time
virtual Int_t GetNumAffectedRows()
get number of affected rows
virtual Double_t GetDouble(Int_t npar)
get parameter as Double_t
virtual Bool_t Process()
process statement
virtual Bool_t GetDate(Int_t npar, Int_t &year, Int_t &month, Int_t &day)
return field value as date
SQLUINTEGER fNumRowsFetched
Bool_t BindColumn(Int_t ncol, SQLSMALLINT sqltype, SQLUINTEGER size)
Bind result column to buffer. Allocate buffer of appropriate type.
virtual Bool_t NextResultRow()
next result row
virtual Bool_t SetTime(Int_t npar, Int_t hour, Int_t min, Int_t sec)
set parameter value as time
SQLUINTEGER fNumParsProcessed
virtual Bool_t SetNull(Int_t npar)
Set NULL as parameter value If NULL should be set for statement parameter during first iteration,...
virtual ULong64_t GetULong64(Int_t npar)
get parameter as ULong64_t
virtual Bool_t GetTimestamp(Int_t npar, Int_t &year, Int_t &month, Int_t &day, Int_t &hour, Int_t &min, Int_t &sec, Int_t &)
return field value as time stamp
Bool_t ExtractErrors(SQLRETURN retcode, const char *method)
Extract errors, produced by last ODBC function call.
Bool_t IsResultSet() const
ODBCBufferRec_t * fBuffer
virtual Bool_t SetString(Int_t npar, const char *value, Int_t maxsize=256)
set parameter as string
virtual Bool_t SetBinary(Int_t npar, void *mem, Long_t size, Long_t maxsize=0x1000)
set parameter value as binary data
virtual Bool_t IsNull(Int_t)
Verifies if field value is NULL.
virtual Bool_t SetTimestamp(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t=0)
Set parameter as timestamp.
virtual Bool_t GetTimestamp(Int_t, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &, Int_t &)
Get parameter as timestamp.
const Int_t n
Definition: legend1.C:16