sqlselect.C

Go to the documentation of this file.
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    // list databases available on server
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    // list tables in database "test" (the permission tables)
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    // list columns in table "runcatalog" in database "mysql"
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    // start timer
00046    TStopwatch timer;
00047    timer.Start();
00048 
00049    // query database and print results
00050    const char *sql = "select dataset,rawfilepath from test.runcatalog "
00051                      "WHERE tag&(1<<2) AND (run=490001 OR run=300122)";
00052 //   const char *sql = "select count(*) from test.runcatalog "
00053 //                     "WHERE tag&(1<<2)";
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    // stop timer and print results
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 }

Generated on Tue Jul 5 15:45:10 2011 for ROOT_528-00b_version by  doxygen 1.5.1