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());