32 TBufferSQL::TBufferSQL(TBuffer::EMode mode, std::vector<Int_t> *vc,
 
   33                        TString *insert_query, TSQLRow ** r) :
 
   35    fColumnVec(vc), fInsertQuery(insert_query), fRowPtr(r)
 
   37    fIter = fColumnVec->begin();
 
   43 TBufferSQL::TBufferSQL(TBuffer::EMode mode, Int_t bufsiz, std::vector<Int_t> *vc,
 
   44                        TString *insert_query, TSQLRow ** r) :
 
   45    TBufferFile(mode,bufsiz),
 
   46    fColumnVec(vc), fInsertQuery(insert_query), fRowPtr(r)
 
   48    fIter = fColumnVec->begin();
 
   54 TBufferSQL::TBufferSQL(TBuffer::EMode mode, Int_t bufsiz, std::vector<Int_t> *vc,
 
   55                        TString *insert_query, TSQLRow ** r,
 
   56                        void *buf, Bool_t adopt) :
 
   57    TBufferFile(mode,bufsiz,buf,adopt),
 
   58    fColumnVec(vc), fInsertQuery(insert_query), fRowPtr(r)
 
   60    fIter = fColumnVec->begin();
 
   66 TBufferSQL::TBufferSQL() : TBufferFile(), fColumnVec(0),fInsertQuery(0),fRowPtr(0)
 
   73 TBufferSQL::~TBufferSQL()
 
   81 void TBufferSQL::ReadBool(Bool_t &b)
 
   83    b = (Bool_t)atoi((*fRowPtr)->GetField(*fIter));
 
   85    if (fIter != fColumnVec->end()) ++fIter;
 
   91 void TBufferSQL::ReadChar(Char_t &c)
 
   93    c = (Char_t)atoi((*fRowPtr)->GetField(*fIter));
 
   95    if (fIter != fColumnVec->end()) ++fIter;
 
  101 void TBufferSQL::ReadShort(Short_t &h)
 
  103    h = (Short_t)atoi((*fRowPtr)->GetField(*fIter));
 
  105    if (fIter != fColumnVec->end()) ++fIter;
 
  111 void TBufferSQL::ReadInt(Int_t &i)
 
  113    i = atoi((*fRowPtr)->GetField(*fIter));
 
  115    if (fIter != fColumnVec->end()) ++fIter;
 
  121 void TBufferSQL::ReadFloat(Float_t &f)
 
  123    f = atof((*fRowPtr)->GetField(*fIter));
 
  125    if (fIter != fColumnVec->end()) ++fIter;
 
  131 void TBufferSQL::ReadLong(Long_t &l)
 
  133    l = atol((*fRowPtr)->GetField(*fIter));
 
  135    if (fIter != fColumnVec->end()) ++fIter;
 
  141 void TBufferSQL::ReadDouble(Double_t &d)
 
  143    d = atof((*fRowPtr)->GetField(*fIter));
 
  145    if (fIter != fColumnVec->end()) ++fIter;
 
  151 void TBufferSQL::WriteBool(Bool_t    b)
 
  153    (*fInsertQuery) += b;
 
  154    (*fInsertQuery) += 
",";
 
  155    if (fIter != fColumnVec->end()) ++fIter;
 
  161 void TBufferSQL::WriteChar(Char_t    c)
 
  163    (*fInsertQuery) += c;
 
  164    (*fInsertQuery) += 
",";
 
  165    if (fIter != fColumnVec->end()) ++fIter;
 
  171 void TBufferSQL::WriteShort(Short_t   h)
 
  173    (*fInsertQuery) += h;
 
  174    (*fInsertQuery) += 
",";
 
  175    if (fIter != fColumnVec->end()) ++fIter;
 
  181 void TBufferSQL::WriteInt(Int_t     i)
 
  183    (*fInsertQuery) += i;
 
  184    (*fInsertQuery) += 
",";
 
  185    if (fIter != fColumnVec->end()) ++fIter;
 
  191 void TBufferSQL::WriteLong(Long_t    l)
 
  193    (*fInsertQuery) += l;
 
  194    (*fInsertQuery) += 
",";
 
  195    if (fIter != fColumnVec->end()) ++fIter;
 
  201 void TBufferSQL::WriteFloat(Float_t   f)
 
  203    (*fInsertQuery) += f;
 
  204    (*fInsertQuery) += 
",";
 
  205    if (fIter != fColumnVec->end()) ++fIter;
 
  211 void TBufferSQL::WriteDouble(Double_t  d)
 
  213    (*fInsertQuery) += d;
 
  214    (*fInsertQuery) += 
",";
 
  215    if (fIter != fColumnVec->end()) ++fIter;
 
  221 void TBufferSQL::ReadUChar(UChar_t& uc)
 
  223    uc = (UChar_t)atoi((*fRowPtr)->GetField(*fIter));
 
  225    if (fIter != fColumnVec->end()) ++fIter;
 
  231 void TBufferSQL::ReadUShort(UShort_t& us)
 
  233    us = (UShort_t)atoi((*fRowPtr)->GetField(*fIter));
 
  235    if (fIter != fColumnVec->end()) ++fIter;
 
  241 void TBufferSQL::ReadUInt(UInt_t& ui)
 
  243    TString val = (*fRowPtr)->GetField(*fIter);
 
  244    Int_t code = sscanf(val.Data(), 
"%u",&ui);
 
  245    if(code == 0) Error(
"operator>>(UInt_t&)",
"Error reading UInt_t");
 
  247    if (fIter != fColumnVec->end()) ++fIter;
 
  253 void TBufferSQL::ReadULong(ULong_t& ul)
 
  255    TString val = (*fRowPtr)->GetField(*fIter);
 
  256    Int_t code = sscanf(val.Data(), 
"%lu",&ul);
 
  257    if(code == 0) Error(
"operator>>(ULong_t&)",
"Error reading ULong_t");
 
  259    if (fIter != fColumnVec->end()) ++fIter;
 
  265 void TBufferSQL::ReadLong64(Long64_t &ll)
 
  267    TString val = (*fRowPtr)->GetField(*fIter);
 
  268    Int_t code = sscanf(val.Data(), 
"%lld",&ll);
 
  269    if(code == 0) Error(
"operator>>(ULong_t&)",
"Error reading Long64_t");
 
  271    if (fIter != fColumnVec->end()) ++fIter;
 
  277 void TBufferSQL::ReadULong64(ULong64_t &ull)
 
  279    TString val = (*fRowPtr)->GetField(*fIter);
 
  280    Int_t code = sscanf(val.Data(), 
"%llu",&ull);
 
  281    if(code == 0) Error(
"operator>>(ULong_t&)",
"Error reading ULong64_t");
 
  283    if (fIter != fColumnVec->end()) ++fIter;
 
  289 void TBufferSQL::ReadCharP(Char_t *str)
 
  291    strcpy(str,(*fRowPtr)->GetField(*fIter));  
 
  292    if (fIter != fColumnVec->end()) ++fIter;
 
  298 void TBufferSQL::ReadTString(TString   &s)
 
  300    s = (*fRowPtr)->GetField(*fIter);
 
  301    if (fIter != fColumnVec->end()) ++fIter;
 
  307 void TBufferSQL::WriteTString(
const TString   &s)
 
  309    (*fInsertQuery) += s;
 
  310    (*fInsertQuery) += 
",";
 
  311    if (fIter != fColumnVec->end()) ++fIter;
 
  319 void TBufferSQL::ReadStdString(std::string *s)
 
  321    TBufferFile::ReadStdString(s);
 
  327 void TBufferSQL::WriteStdString(
const std::string *s)
 
  329    TBufferFile::WriteStdString(s);
 
  335 void TBufferSQL::ReadCharStar(
char* &s)
 
  337    TBufferFile::ReadCharStar(s);
 
  343 void TBufferSQL::WriteCharStar(
char *s)
 
  345    TBufferFile::WriteCharStar(s);
 
  354 void TBufferSQL::WriteUChar(UChar_t uc)
 
  356    (*fInsertQuery) += uc;
 
  357    (*fInsertQuery) += 
",";
 
  364 void TBufferSQL::WriteUShort(UShort_t us)
 
  366    (*fInsertQuery) += us;
 
  367    (*fInsertQuery) += 
",";
 
  374 void TBufferSQL::WriteUInt(UInt_t ui)
 
  376    (*fInsertQuery) += ui;
 
  377    (*fInsertQuery) += 
",";
 
  384 void TBufferSQL::WriteULong(ULong_t ul)
 
  386    (*fInsertQuery) += ul;
 
  387    (*fInsertQuery) += 
",";
 
  394 void TBufferSQL::WriteLong64(Long64_t ll)
 
  396    (*fInsertQuery) += ll;
 
  397    (*fInsertQuery) += 
",";
 
  404 void TBufferSQL::WriteULong64(ULong64_t ull)
 
  406    (*fInsertQuery) += ull;
 
  407    (*fInsertQuery) += 
",";
 
  414 void TBufferSQL::WriteCharP(
const Char_t *str)
 
  416    (*fInsertQuery) += 
"\"";
 
  417    (*fInsertQuery) += str;
 
  418    (*fInsertQuery) += 
"\",";
 
  425 void TBufferSQL::WriteFastArray(
const Bool_t *b, Int_t n)
 
  427    for(
int i=0; i<n; ++i) {
 
  428       (*fInsertQuery) += b[i];
 
  429       (*fInsertQuery) += 
",";
 
  437 void TBufferSQL::WriteFastArray(
const Char_t *c, Int_t n)
 
  439    for(
int i=0; i<n; ++i) {
 
  440       (*fInsertQuery) += (Short_t)c[i];
 
  441       (*fInsertQuery) += 
",";
 
  449 void TBufferSQL::WriteFastArrayString(
const Char_t *c, Int_t )
 
  451    (*fInsertQuery) += 
"\"";
 
  452    (*fInsertQuery) += c;
 
  453    (*fInsertQuery) += 
"\",";
 
  460 void TBufferSQL::WriteFastArray(
const UChar_t *uc, Int_t n)
 
  462    for(
int i=0; i<n; ++i) {
 
  463       (*fInsertQuery) += uc[i];
 
  464       (*fInsertQuery) += 
",";
 
  472 void TBufferSQL::WriteFastArray(
const Short_t *h, Int_t n)
 
  474    for(
int i=0; i<n; ++i) {
 
  475       (*fInsertQuery) += h[i];
 
  476       (*fInsertQuery) += 
",";
 
  484 void TBufferSQL::WriteFastArray(
const UShort_t *us, Int_t n)
 
  486    for(
int i=0; i<n; ++i) {
 
  487       (*fInsertQuery) += us[i];
 
  488       (*fInsertQuery) += 
",";
 
  496 void TBufferSQL::WriteFastArray(
const Int_t     *ii, Int_t n)
 
  499    for(
int i=0; i<n; ++i) {
 
  500       (*fInsertQuery) += ii[i];
 
  501       (*fInsertQuery) += 
",";
 
  509 void TBufferSQL::WriteFastArray(
const UInt_t *ui, Int_t n)
 
  511    for(
int i=0; i<n; ++i) {
 
  512       (*fInsertQuery) += ui[i];
 
  513       (*fInsertQuery) += 
",";
 
  521 void TBufferSQL::WriteFastArray(
const Long_t    *l, Int_t n)
 
  523    for(
int i=0; i<n; ++i) {
 
  524       (*fInsertQuery)+= l[i];
 
  525       (*fInsertQuery)+= 
",";
 
  533 void TBufferSQL::WriteFastArray(
const ULong_t   *ul, Int_t n)
 
  535    for(
int i=0; i<n; ++i) {
 
  536       (*fInsertQuery) += ul[i];
 
  537       (*fInsertQuery) += 
",";
 
  545 void TBufferSQL::WriteFastArray(
const Long64_t  *l, Int_t n)
 
  547    for(
int i=0; i<n; ++i) {
 
  548       (*fInsertQuery) += l[i];
 
  549       (*fInsertQuery) += 
",";
 
  557 void TBufferSQL::WriteFastArray(
const ULong64_t *ul, Int_t n)
 
  559    for(
int i=0; i<n; ++i) {
 
  560       (*fInsertQuery) += ul[i];
 
  561       (*fInsertQuery) += 
",";
 
  569 void TBufferSQL::WriteFastArray(
const Float_t   *f, Int_t n)
 
  571    for(
int i=0; i<n; ++i) {
 
  572       (*fInsertQuery) += f[i];
 
  573       (*fInsertQuery) += 
",";
 
  581 void TBufferSQL::WriteFastArray(
const Double_t  *d, Int_t n)
 
  583    for(
int i=0; i<n; ++i) {
 
  584       (*fInsertQuery) += d[i];
 
  585       (*fInsertQuery )+= 
",";
 
  593 void TBufferSQL::WriteFastArray(
void*, 
const TClass*, Int_t, TMemberStreamer *)
 
  595    Fatal(
"WriteFastArray(void*, const TClass*, Int_t, TMemberStreamer *)",
"Not implemented yet");
 
  601 Int_t TBufferSQL::WriteFastArray(
void **, 
const TClass*, Int_t, Bool_t, TMemberStreamer*)
 
  603    Fatal(
"WriteFastArray(void **, const TClass*, Int_t, Bool_t, TMemberStreamer*)",
"Not implemented yet");
 
  610 void TBufferSQL::ReadFastArray(Bool_t *b, Int_t n)
 
  612    for(
int i=0; i<n; ++i) {
 
  613       b[i] = (Bool_t)atoi((*fRowPtr)->GetField(*fIter));
 
  621 void TBufferSQL::ReadFastArray(Char_t *c, Int_t n)
 
  623    for(
int i=0; i<n; ++i) {
 
  624       c[i] = (Char_t)atoi((*fRowPtr)->GetField(*fIter));
 
  632 void TBufferSQL::ReadFastArrayString(Char_t *c, Int_t )
 
  634    strcpy(c,((*fRowPtr)->GetField(*fIter)));
 
  641 void TBufferSQL::ReadFastArray(UChar_t *uc, Int_t n)
 
  643    for(
int i=0; i<n; ++i) {
 
  644       uc[i] = (UChar_t)atoi((*fRowPtr)->GetField(*fIter));
 
  652 void TBufferSQL::ReadFastArray(Short_t *s, Int_t n)
 
  654    for(
int i=0; i<n; ++i) {
 
  655       s[i] = (Short_t)atoi((*fRowPtr)->GetField(*fIter));
 
  663 void TBufferSQL::ReadFastArray(UShort_t *us, Int_t n)
 
  665    for(
int i=0; i<n; ++i) {
 
  666       us[i] = (UShort_t)atoi((*fRowPtr)->GetField(*fIter));
 
  674 void     TBufferSQL::ReadFastArray(Int_t *in, Int_t n)
 
  676    for(
int i=0; i<n; ++i) {
 
  677       in[i] = atoi((*fRowPtr)->GetField(*fIter));
 
  685 void     TBufferSQL::ReadFastArray(UInt_t *ui, Int_t n)
 
  687    for(
int i=0; i<n; ++i) {
 
  688       ui[i] = atoi((*fRowPtr)->GetField(*fIter));
 
  696 void TBufferSQL::ReadFastArray(Long_t *l, Int_t n)
 
  698    for(
int i=0; i<n; ++i) {
 
  699       l[i] = atol((*fRowPtr)->GetField(*fIter));
 
  707 void TBufferSQL::ReadFastArray(ULong_t   *ul, Int_t n)
 
  709    for(
int i=0; i<n; ++i) {
 
  717 void TBufferSQL::ReadFastArray(Long64_t  *ll, Int_t n)
 
  719    for(
int i=0; i<n; ++i) {
 
  727 void TBufferSQL::ReadFastArray(ULong64_t *ull, Int_t n)
 
  729    for(
int i=0; i<n; ++i) {
 
  737 void TBufferSQL::ReadFastArray(Float_t   *f, Int_t n)
 
  739    for(
int i=0; i<n; ++i) {
 
  740       f[i] = atof((*fRowPtr)->GetField(*fIter));
 
  748 void TBufferSQL::ReadFastArray(Double_t *d, Int_t n)
 
  750    for(
int i=0; i<n; ++i) {
 
  751       d[i] = atof((*fRowPtr)->GetField(*fIter));
 
  759 void     TBufferSQL::ReadFastArrayFloat16(Float_t  *, Int_t , TStreamerElement *)
 
  761    Fatal(
"ReadFastArrayFloat16(Float_t  *, Int_t , TStreamerElement *)",
"Not implemented yet");
 
  767 void TBufferSQL::ReadFastArrayWithFactor(Float_t  *, Int_t , Double_t , Double_t )
 
  769    Fatal(
"ReadFastArrayWithFactor(Float_t  *, Int_t, Double_t, Double_t)",
"Not implemented yet");
 
  775 void TBufferSQL::ReadFastArrayWithNbits(Float_t  *, Int_t , Int_t )
 
  777    Fatal(
"ReadFastArrayWithNbits(Float_t  *, Int_t , Int_t )",
"Not implemented yet");
 
  783 void TBufferSQL::ReadFastArrayWithFactor(Double_t  *, Int_t , Double_t , Double_t )
 
  785    Fatal(
"ReadFastArrayWithFactor(Double_t  *, Int_t, Double_t, Double_t)",
"Not implemented yet");
 
  791 void TBufferSQL::ReadFastArrayWithNbits(Double_t  *, Int_t , Int_t )
 
  793    Fatal(
"ReadFastArrayWithNbits(Double_t  *, Int_t , Int_t )",
"Not implemented yet");
 
  799 void     TBufferSQL::ReadFastArrayDouble32(Double_t  *, Int_t , TStreamerElement *)
 
  801    Fatal(
"ReadFastArrayDouble32(Double_t  *, Int_t , TStreamerElement *)",
"Not implemented yet");
 
  807 void     TBufferSQL::ReadFastArray(
void  *, 
const TClass *, Int_t, TMemberStreamer *, 
const TClass *)
 
  809    Fatal(
"ReadFastArray(void  *, const TClass *, Int_t, TMemberStreamer *, const TClass *)",
"Not implemented yet");
 
  815 void     TBufferSQL::ReadFastArray(
void **, 
const TClass *, Int_t, Bool_t, TMemberStreamer *, 
const TClass *)
 
  817    Fatal(
"ReadFastArray(void **, const TClass *, Int_t, Bool_t, TMemberStreamer *, const TClass *)",
"Not implemented yet");
 
  823 void TBufferSQL::ResetOffset()
 
  825    fIter = fColumnVec->begin();
 
  831 void TBufferSQL::insert_test(
const char* dsn, 
const char* usr,
 
  832                              const char* pwd, 
const TString& tblname)
 
  835    TString select = 
"select * from ";
 
  838    sql = select + 
"ins";
 
  840    con = gSQLDriverManager->GetConnection(dsn,usr,pwd);
 
  843       printf(
"\n\n\nConnection NOT Successful\n\n\n");
 
  845       printf(
"\n\n\nConnection Sucessful\n\n\n");
 
  847    stmt = con->CreateStatement(0, odbc::ResultSet::CONCUR_READ_ONLY);
 
  849    ptr = stmt->ExecuteQuery(sql.Data());
 
  850    if(!ptr) printf(
"No recorSet found!");
 
  853    ptr->MoveToInsertRow();
 
  854    std::cerr << 
"IsAfterLast(): " << ptr->IsAfterLast() << std::endl;
 
  855    ptr->UpdateInt(1, 5555);
 
  859    ptr1 = stmt->ExecuteQuery(sql.Data());