Hi Anton, Fons, et al
On Wed, 6 Mar 2002 15:41:07 +0100
anton.fokin@nl.fortisbank.com wrote
concerning "[ROOT] TSQLServer::Query enhancement request":
> Hi Fons et.al.,
>
> could you enhance SQLServer::Query() so that it takes format string and an
> optional list of parameters lke printf().
>
> SQLServer::Query("DELETE FROM stock WHERE name = %s", Stock->GetName());
I think a better thing would be to have a TSQLQuery class, and all
the Query methods could accept this kind of object as an argument.
A possible interface could be
class TSQLQuery : public TObject
{
private:
TString fQuery; // The actual query
public:
TSQLQuery(const Char_t* query);
TSQLQuery(const Char_t* fmt, ...);
static TSQLQuery* Select(const Char_t* fields,
const Char_t* tables,
const Char_t* conditions=0,
const Char_t* other=0);
static TSQLQuery* Insert(const Char_t* table,
const Char_t* values);
static TSQLQuery* Update(const Char_t* table,
const Char_t* variables,
const Char_t* values,
cosnt Char_t* conditions);
TSQLQuery& operator+=(const Char_t* query);
TSQLQuery& operator+=(const TString& query);
TSQLQuery& operator<<(const Char_t* query);
TSQLQuery& operator<<(const TString& query);
void Reset() { fQuery.Clear(); }
const TString& Query() const { return fQuery; }
const Char_t* Data() const { return fQuery.Data(); }
operator const Char_t*() { return fQuery.Data(); }
...
ClassDef(TSQLQuery, 1) // SQL query class
};
Maybe, this would help in making real SQL queries for TTree's. The
class could have a member function
TSelection* TSQLQuery::Selection(TTree* tree) const
that parses the SQL string, matches field and table names to branches
and leaves in the TTree, and make the appropiate TSelection object.
Just my two cents worth.
Yours,
Christian Holm Christensen -------------------------------------------
Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91
DK-2200 Copenhagen N Cell: (+45) 28 82 16 23
Denmark Office: (+45) 353 25 305
Email: cholm@nbi.dk Web: www.nbi.dk/~cholm
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:44 MET