Logo ROOT  
Reference Guide
TMySQLRow.cxx
Go to the documentation of this file.
1 // @(#)root/mysql:$Id$
2 // Author: Fons Rademakers 15/02/2000
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, 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 #include "TMySQLRow.h"
13 
14 
16 
17 ////////////////////////////////////////////////////////////////////////////////
18 /// Single row of query result.
19 
20 TMySQLRow::TMySQLRow(void *res, ULong_t rowHandle)
21 {
22  fResult = (MYSQL_RES *) res;
23  fFields = (MYSQL_ROW) rowHandle;
24  fFieldLength = 0;
25 }
26 
27 ////////////////////////////////////////////////////////////////////////////////
28 /// Destroy row object.
29 
31 {
32  if (fFields)
33  Close();
34 }
35 
36 ////////////////////////////////////////////////////////////////////////////////
37 /// Close row.
38 
40 {
41  if (!fFields)
42  return;
43 
44  fFields = nullptr;
45  fResult = nullptr;
46  fFieldLength = 0;
47 }
48 
49 ////////////////////////////////////////////////////////////////////////////////
50 /// Check if row is open and field index within range.
51 
53 {
54  if (!fFields) {
55  Error("IsValid", "row closed");
56  return kFALSE;
57  }
58  if (field < 0 || field >= (Int_t)mysql_num_fields(fResult)) {
59  Error("IsValid", "field index out of bounds");
60  return kFALSE;
61  }
62  return kTRUE;
63 }
64 
65 ////////////////////////////////////////////////////////////////////////////////
66 /// Get length in bytes of specified field.
67 
69 {
70  if (!IsValid(field))
71  return 0;
72 
73  if (!fFieldLength)
74  fFieldLength = mysql_fetch_lengths(fResult);
75 
76  if (!fFieldLength) {
77  Error("GetFieldLength", "cannot get field length");
78  return 0;
79  }
80 
81  return fFieldLength[field];
82 }
83 
84 ////////////////////////////////////////////////////////////////////////////////
85 /// Get specified field from row (0 <= field < GetFieldCount()).
86 
87 const char *TMySQLRow::GetField(Int_t field)
88 {
89  if (!IsValid(field))
90  return nullptr;
91 
92  return fFields[field];
93 }
TMySQLRow::fResult
MYSQL_RES * fResult
Definition: TMySQLRow.h:28
kTRUE
const Bool_t kTRUE
Definition: RtypesCore.h:91
ClassImp
#define ClassImp(name)
Definition: Rtypes.h:364
TMySQLRow::fFieldLength
ULong_t * fFieldLength
Definition: TMySQLRow.h:30
TObject::Error
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:890
TMySQLRow::fFields
MYSQL_ROW fFields
Definition: TMySQLRow.h:29
TMySQLRow::GetField
const char * GetField(Int_t field) final
Get specified field from row (0 <= field < GetFieldCount()).
Definition: TMySQLRow.cxx:87
bool
Option_t
const typedef char Option_t
Definition: RtypesCore.h:66
TMySQLRow.h
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:92
ULong_t
unsigned long ULong_t
Definition: RtypesCore.h:55
TMySQLRow
Definition: TMySQLRow.h:19
TMySQLRow::IsValid
Bool_t IsValid(Int_t field)
Check if row is open and field index within range.
Definition: TMySQLRow.cxx:52
TMySQLRow::~TMySQLRow
~TMySQLRow()
Destroy row object.
Definition: TMySQLRow.cxx:30
TMySQLRow::Close
void Close(Option_t *opt="") final
Close row.
Definition: TMySQLRow.cxx:39
TMySQLRow::GetFieldLength
ULong_t GetFieldLength(Int_t field) final
Get length in bytes of specified field.
Definition: TMySQLRow.cxx:68
TMySQLRow::TMySQLRow
TMySQLRow(void *result, ULong_t rowHandle)
Single row of query result.
Definition: TMySQLRow.cxx:20
int