FEDRA emulsion software from the OPERA Collaboration
TOracleResult Class Reference

#include <TOracleResult.h>

Inheritance diagram for TOracleResult:
Collaboration diagram for TOracleResult:

Public Member Functions

void Close (Option_t *opt="")
 
Int_t GetFieldCount ()
 
const char * GetFieldName (Int_t field)
 
TSQLRow * Next ()
 
 TOracleResult (Connection *conn, const char *tableName)
 
 TOracleResult (Statement *stmt)
 
 TOracleResult (Statement *stmt, int row_count)
 
 ~TOracleResult ()
 

Protected Member Functions

void GetMetaDataInfo ()
 
void initResultSet (Statement *stmt)
 

Private Member Functions

Bool_t IsValid (Int_t field)
 

Private Attributes

Int_t fFieldCount
 
std::vector< MetaData > * fFieldInfo
 
ResultSet * fResult
 
Int_t fResultType
 
Statement * fStmt
 
UInt_t fUpdateCount
 

Constructor & Destructor Documentation

◆ TOracleResult() [1/3]

TOracleResult::TOracleResult ( Statement *  stmt)
77{
78 initResultSet(stmt);
79}
void initResultSet(Statement *stmt)
Definition: TOracleResult.cxx:42

◆ TOracleResult() [2/3]

TOracleResult::TOracleResult ( Statement *  stmt,
int  row_count 
)
83{
84 initResultSet(stmt);
85 // override fRowCount set by initResultSet()
86 fRowCount = (row_count==-1)?0:row_count;
87}

◆ TOracleResult() [3/3]

TOracleResult::TOracleResult ( Connection *  conn,
const char *  tableName 
)
92{
93 if (!tableName || !conn) {
94 Error("TOracleResult", "construction: empty input parameter");
95 fResultType = -1;
96 } else {
97 MetaData connMD = conn->getMetaData(tableName, MetaData::PTYPE_TABLE);
98 fFieldInfo = new vector<MetaData>(connMD.getVector(MetaData::ATTR_LIST_COLUMNS));
99 fFieldCount = fFieldInfo->size();
100 fRowCount = 0;
101 fResult = 0;
102 fUpdateCount = 0;
103 fResultType = 1;
104 }
105}
UInt_t fUpdateCount
Definition: TOracleResult.h:42
std::vector< MetaData > * fFieldInfo
Definition: TOracleResult.h:40
ResultSet * fResult
Definition: TOracleResult.h:39
Int_t fResultType
Definition: TOracleResult.h:43
Int_t fFieldCount
Definition: TOracleResult.h:41

◆ ~TOracleResult()

TOracleResult::~TOracleResult ( )
109{
110 // Cleanup Oracle query result.
111
112 if (fResult)
113 Close();
114}
void Close(Option_t *opt="")
Definition: TOracleResult.cxx:117

Member Function Documentation

◆ Close()

void TOracleResult::Close ( Option_t *  opt = "")
118{
119 // Close query result.
120
121 if (!fResult || !fStmt)
122 return;
123 fResultType = -1;
124 fStmt->closeResultSet(fResult);
125 fResult = 0;
126 if (fFieldInfo)
127 delete fFieldInfo;
128 fRowCount = 0;
129}
Statement * fStmt
Definition: TOracleResult.h:38

◆ GetFieldCount()

Int_t TOracleResult::GetFieldCount ( )
145{
146 // Get number of fields in result.
147
148 return fFieldCount;
149}

◆ GetFieldName()

const char * TOracleResult::GetFieldName ( Int_t  field)
153{
154 // Get name of specified field.
155
156 if (!IsValid(field))
157 return 0;
158 string s = (*fFieldInfo)[field].getString(MetaData::ATTR_NAME);
159 return (const char *)s.c_str();
160}
Bool_t IsValid(Int_t field)
Definition: TOracleResult.cxx:132
s
Definition: check_shower.C:55

◆ GetMetaDataInfo()

void TOracleResult::GetMetaDataInfo ( )
protected

◆ initResultSet()

void TOracleResult::initResultSet ( Statement *  stmt)
protected
43{
44 // Oracle query result.
45
46 if (!stmt) {
47 Error("initResultSet()", "construction: empty statement");
48 fResultType = -1;
49 } else {
50 try {
51 fStmt = stmt;
52 if (stmt->status() == Statement::RESULT_SET_AVAILABLE) {
53 fResultType = 1;
54 fResult = stmt->getResultSet();
56 fUpdateCount = 0;
57 //printf("type:%d columnsize:%d \n", fResultType, fFieldCount);
58 } else if (stmt->status() == Statement::UPDATE_COUNT_AVAILABLE) {
59 fResultType = 0;
60 fResult = 0;
61 fRowCount = 0;
62 fFieldInfo = 0;
63 fFieldCount= 0;
64 fUpdateCount = stmt->getUpdateCount();
65 } else {
66 fResultType = -1;
67 }
68 } catch (SQLException &oraex) {
69 Error("initResultSet()", (oraex.getMessage()).c_str());
70 MakeZombie();
71 }
72 }
73}
void GetMetaDataInfo()

◆ IsValid()

Bool_t TOracleResult::IsValid ( Int_t  field)
private
133{
134 // Check if result set is open and field index within range.
135
136 if (field < 0 || field >= fFieldCount) {
137 Error("IsValid", "field index out of bounds");
138 return kFALSE;
139 }
140 return kTRUE;
141}

◆ Next()

TSQLRow * TOracleResult::Next ( )
164{
165 // Get next query result row. The returned object must be
166 // deleted by the user.
167
168 if (fResultType == -1) {
169 Error("Next", "result set closed");
170 return 0;
171 }
172
173 if (fResultType == 0) {
174 // if dml query, ...
175 return new TOracleRow(fUpdateCount);
176 }
177
178 // if select query,
179 try {
180 if (fResult->next()) {
181 return new TOracleRow(fResult, fFieldInfo);
182 } else
183 return 0;
184 } catch (SQLException &oraex) {
185 Error("Next()", (oraex.getMessage()).c_str());
186 MakeZombie();
187 }
188 return 0;
189}
Definition: TOracleRow.h:30

Member Data Documentation

◆ fFieldCount

Int_t TOracleResult::fFieldCount
private

◆ fFieldInfo

std::vector<MetaData>* TOracleResult::fFieldInfo
private

◆ fResult

ResultSet* TOracleResult::fResult
private

◆ fResultType

Int_t TOracleResult::fResultType
private

◆ fStmt

Statement* TOracleResult::fStmt
private

◆ fUpdateCount

UInt_t TOracleResult::fUpdateCount
private

The documentation for this class was generated from the following files: