[ROOT] TTreeRow and TSQLRow

From: Ashley Cambrell (ash@freaky-namuh.com)
Date: Thu May 02 2002 - 15:19:21 MEST


Hi ROOTers,

I am trying to do a comparison between Carrot and PHP, and I'm filling
in some gaps in Root and Carrot from a webdevelopers perspective (only a
conceptually small change! [I know root's main purpose is physics and
not web development]) and I need to know if TTreeRow does, would or
could have any concept of a "field name".

As a webdeveloper is it best often best (in my view) to use field name
instead of field numbers for sql query returns so you can change the
statement (add an extra column) without ferreting around and changing
row->GetField(1) to row->GetField(2) etc.  So.. I've been adding the
ability to do row->GetField("customerid").  I have changed the various
database drivers (mysql, sapdb, pgsql) BUT, I didn't know TTreeRow used
TSQLRow as it's base class. (I soon found out when I tried to compile it)

What should I do? I don't know /how/ TTreeRow is used so I can't tell if
it's beneficial to add the concept of field names, or should I just make
it return nothing?  

There are actually a couple of functions I have added

class TSQLRow : public TObject {

protected:
   TSQLRow() { }

public:
   virtual ~TSQLRow() { }

   virtual void        Close(Option_t *option="") = 0;
   virtual ULong_t     GetFieldLength(Int_t field) = 0;
   virtual const char *GetField(Int_t field) = 0;
   virtual Int_t       GetFieldPosition(const char*  fieldName) = 0;
   virtual const char *GetFieldName(Int_t field) = 0;
   const char         *GetField(const char*  fieldName) { return
GetField(GetFieldPosition(fieldName)); }
   const char         *operator[](const char* fieldName) { return
GetField(GetFieldPosition(fieldName)); }
   const char         *operator[](Int_t field) { return GetField(field); }

   ClassDef(TSQLRow,0)  // One row of an SQL query result
};

Thanks for your help.

Ashley Cambrell



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:52 MET