00001 #ifndef __CINT__
00002 #include <TSQLServer.h>
00003 #include <TSQLResult.h>
00004 #include <TSQLRow.h>
00005 #endif
00006
00007 void sqlselect()
00008 {
00009 TSQLServer *db = TSQLServer::Connect("mysql://localhost/test","nobody", "");
00010
00011 printf("Server info: %s\n", db->ServerInfo());
00012
00013 TSQLRow *row;
00014 TSQLResult *res;
00015
00016
00017 printf("\nList all databases on server %s\n", db->GetHost());
00018 res = db->GetDataBases();
00019 while ((row = res->Next())) {
00020 printf("%s\n", row->GetField(0));
00021 delete row;
00022 }
00023 delete res;
00024
00025
00026 printf("\nList all tables in database \"test\" on server %s\n",
00027 db->GetHost());
00028 res = db->GetTables("test");
00029 while ((row = res->Next())) {
00030 printf("%s\n", row->GetField(0));
00031 delete row;
00032 }
00033 delete res;
00034
00035
00036 printf("\nList all columns in table \"runcatalog\" in database \"test\" on server %s\n",
00037 db->GetHost());
00038 res = db->GetColumns("test", "runcatalog");
00039 while ((row = res->Next())) {
00040 printf("%s\n", row->GetField(0));
00041 delete row;
00042 }
00043 delete res;
00044
00045
00046 TStopwatch timer;
00047 timer.Start();
00048
00049
00050 const char *sql = "select dataset,rawfilepath from test.runcatalog "
00051 "WHERE tag&(1<<2) AND (run=490001 OR run=300122)";
00052
00053
00054
00055 res = db->Query(sql);
00056
00057 int nrows = res->GetRowCount();
00058 printf("\nGot %d rows in result\n", nrows);
00059
00060 int nfields = res->GetFieldCount();
00061 for (int i = 0; i < nfields; i++)
00062 printf("%40s", res->GetFieldName(i));
00063 printf("\n");
00064 for (int i = 0; i < nfields*40; i++)
00065 printf("=");
00066 printf("\n");
00067
00068 for (int i = 0; i < nrows; i++) {
00069 row = res->Next();
00070 for (int j = 0; j < nfields; j++) {
00071 printf("%40s", row->GetField(j));
00072 }
00073 printf("\n");
00074 delete row;
00075 }
00076
00077 delete res;
00078 delete db;
00079
00080
00081 timer.Stop();
00082 Double_t rtime = timer.RealTime();
00083 Double_t ctime = timer.CpuTime();
00084
00085 printf("\nRealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime);
00086 }