Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:22:07

0001 
0002 #include <TError.h>
0003 #include <TString.h>
0004 #include <RDBC/TSQLDriverManager.h>
0005 #include <RDBC/TSQLConnection.h>
0006 #include <RDBC/TSQLDatabaseMetaData.h>
0007 #include <RDBC/TSQLResultSet.h>
0008 #include <RDBC/TSQLResultSetMetaData.h>
0009 #include <RDBC/TSQLPreparedStatement.h>
0010 #include <RDBC/TSQLCallableStatement.h>
0011 #include <RDBC/TSQLTypes.h>
0012 #include <string>
0013 extern "C" {
0014 #include <stdlib.h>
0015 };
0016 
0017 //A quick test to make sure TSQLResultSetMetaData::GetTables() works
0018 //and  TSQLResultSetMetaData::GetColumnName()  and ::GetColumnTypeName()
0019 //work OK
0020 //Author dbox@fnal.gov
0021 //Date 1/6/03
0022 //
0023 //___________________________________________________________________
0024 Int_t RDBCTestMetaData(const Text_t* dsn, const Text_t* schema,
0025                const Text_t* usr="",
0026                const Text_t* pwd="")
0027 {
0028   //    Open a connection...
0029   TSQLConnection* myConnection = NULL;
0030   if(usr!="" && pwd !=""){
0031     if(getenv("VERBOSE"))
0032       printf( "connecting with: dsn= %s usr=%s pwd=%s\n",dsn,usr,pwd);
0033     myConnection = TSQLDriverManager::GetConnection( dsn, usr,  pwd );
0034   } else{
0035     if(getenv("VERBOSE"))
0036       printf( "connecting with: dsn= %s \n",dsn);
0037     myConnection = TSQLDriverManager::GetConnection( dsn );
0038   }
0039 
0040   if(!myConnection) {
0041 
0042     printf( "failed to connect: dsn= %s usr=%s pwd=%s\n",dsn,usr,pwd);
0043     printf("exiting...\n");
0044     return -1;  // return on error
0045   }else
0046     printf("connected!!!\n");
0047 
0048   TSQLDatabaseMetaData *md = myConnection->GetMetaData();
0049 
0050 
0051 
0052 
0053 
0054 
0055 
0056   TString schm=schema;
0057   TString catalog=schema;
0058   TString tab_pattern="";
0059   TString tab_type="TABLE";
0060   TString tableName="";
0061   TSQLResultSet *rs = md->GetTables(catalog,schm,tab_pattern,tab_type);
0062   while(rs->Next()){
0063     tableName = rs->GetString(3);
0064     printf("%s\n",tableName.Data());
0065   }
0066 
0067   printf("Bool_t AllProceduresAreCallable():%d\n", 
0068      md->AllProceduresAreCallable());
0069   printf("Bool_t AllTablesAreSelectable():%d\n",
0070      md->AllTablesAreSelectable());
0071   printf("TString GetUserName():%s\n", md->GetUserName().Data());
0072   printf("Bool_t IsReadOnly():%d\n", md->IsReadOnly());
0073   printf("Bool_t NullsAreSortedHigh():%d\n", md->NullsAreSortedHigh());
0074   printf("Bool_t NullsAreSortedLow():%d\n", md->NullsAreSortedLow());
0075   printf("Bool_t NullsAreSortedAtStart():%d\n", md->NullsAreSortedAtStart());
0076   printf("Bool_t NullsAreSortedAtEnd():%d\n", md->NullsAreSortedAtEnd());
0077   printf("TString GetDatabaseProductName():%s\n", 
0078      md->GetDatabaseProductName().Data());
0079   printf("TString GetDatabaseProductVersion():%s\n", 
0080      md->GetDatabaseProductVersion().Data());
0081   printf("TString GetDriverName():%s\n", md->GetDriverName().Data());
0082   printf("TString GetDriverVersion():%s\n", md->GetDriverVersion().Data());
0083   printf("Int_t GetDriverMajorVersion():%d\n", md->GetDriverMajorVersion());
0084   printf("Int_t GetDriverMinorVersion():%d\n", md->GetDriverMinorVersion());
0085   printf("Bool_t UsesLocalFiles():%d\n", md->UsesLocalFiles());
0086   printf("Bool_t UsesLocalFilePerTable():%d\n", md->UsesLocalFilePerTable());
0087   printf("Bool_t SupportsMixedCaseIdentifiers():%d\n", 
0088      md->SupportsMixedCaseIdentifiers());
0089   printf("Bool_t StoresUpperCaseIdentifiers():%d\n", 
0090      md->StoresUpperCaseIdentifiers());
0091   printf("Bool_t StoresLowerCaseIdentifiers():%d\n", 
0092      md->StoresLowerCaseIdentifiers());
0093   printf("Bool_t StoresMixedCaseIdentifiers():%d\n", 
0094      md->StoresMixedCaseIdentifiers());
0095   printf("Bool_t SupportsMixedCaseQuotedIdentifiers():%d\n", 
0096      md->SupportsMixedCaseQuotedIdentifiers());
0097   printf("Bool_t StoresUpperCaseQuotedIdentifiers():%d\n", 
0098      md->StoresUpperCaseQuotedIdentifiers());
0099   printf("Bool_t StoresLowerCaseQuotedIdentifiers():%d\n", 
0100      md->StoresLowerCaseQuotedIdentifiers());
0101   printf("Bool_t StoresMixedCaseQuotedIdentifiers():%d\n", 
0102      md->StoresMixedCaseQuotedIdentifiers());
0103   printf("TString GetIdentifierQuoteString():%s\n", 
0104      md->GetIdentifierQuoteString().Data());
0105   printf("TString GetSQLKeywords():%s\n", 
0106      md->GetSQLKeywords().Data());
0107   printf("TString GetNumericFunctions():%s\n", 
0108      md->GetNumericFunctions().Data());
0109   printf("TString GetStringFunctions():%s\n", 
0110      md->GetStringFunctions().Data());
0111   printf("TString GetSystemFunctions():%s\n", 
0112      md->GetSystemFunctions().Data());
0113   printf("TString GetTimeDateFunctions():%s\n", 
0114      md->GetTimeDateFunctions().Data());
0115   printf("TString GetSearchStringEscape():%s\n", 
0116      md->GetSearchStringEscape().Data());
0117   printf("TString GetExtraNameCharacters():%s\n", 
0118      md->GetExtraNameCharacters().Data());
0119   printf("Bool_t SupportsAlterTableWithAddColumn():%d\n", 
0120      md->SupportsAlterTableWithAddColumn());
0121   printf("Bool_t SupportsAlterTableWithDropColumn():%d\n", 
0122      md->SupportsAlterTableWithDropColumn());
0123   printf("Bool_t SupportsColumnAliasing():%d\n", 
0124      md->SupportsColumnAliasing());
0125   printf("Bool_t NullPlusNonNullIsNull():%d\n", 
0126      md->NullPlusNonNullIsNull());
0127   printf("Bool_t SupportsConvert():%d\n", md->SupportsConvert());
0128   //printf("Bool_t SupportsConvert(Int_t:%d\n", md->SupportsConvert(Int_t);
0129   printf("Bool_t SupportsTableCorrelationNames():%d\n", 
0130      md->SupportsTableCorrelationNames());
0131   printf("Bool_t SupportsDifferentTableCorrelationNames():%d\n", 
0132      md->SupportsDifferentTableCorrelationNames());
0133   printf("Bool_t SupportsExpressionsInOrderBy():%d\n", 
0134      md->SupportsExpressionsInOrderBy());
0135   printf("Bool_t SupportsOrderByUnrelated():%d\n", 
0136      md->SupportsOrderByUnrelated());
0137   printf("Bool_t SupportsGroupBy():%d\n", 
0138      md->SupportsGroupBy());
0139   printf("Bool_t SupportsGroupByUnrelated():%d\n", 
0140      md->SupportsGroupByUnrelated());
0141   printf("Bool_t SupportsGroupByBeyondSelect():%d\n", 
0142      md->SupportsGroupByBeyondSelect());
0143   printf("Bool_t SupportsLikeEscapeClause():%d\n", 
0144      md->SupportsLikeEscapeClause());
0145   printf("Bool_t SupportsMultipleResultSets():%d\n", 
0146      md->SupportsMultipleResultSets());
0147   printf("Bool_t SupportsMultipleTransactions():%d\n", 
0148      md->SupportsMultipleTransactions());
0149   printf("Bool_t SupportsNonNullableColumns():%d\n", 
0150      md->SupportsNonNullableColumns());
0151   printf("Bool_t SupportsMinimumSQLGrammar():%d\n", 
0152      md->SupportsMinimumSQLGrammar());
0153   printf("Bool_t SupportsCoreSQLGrammar():%d\n", 
0154      md->SupportsCoreSQLGrammar());
0155   printf("Bool_t SupportsExtendedSQLGrammar():%d\n", 
0156      md->SupportsExtendedSQLGrammar());
0157   printf("Bool_t SupportsANSI92EntryLevelSQL():%d\n", 
0158      md->SupportsANSI92EntryLevelSQL());
0159   printf("Bool_t SupportsANSI92IntermediateSQL():%d\n", 
0160      md->SupportsANSI92IntermediateSQL());
0161   printf("Bool_t SupportsANSI92FullSQL():%d\n", 
0162      md->SupportsANSI92FullSQL());
0163   printf("Bool_t SupportsIntegrityEnhancementFacility():%d\n", 
0164      md->SupportsIntegrityEnhancementFacility());
0165   printf("Bool_t SupportsOuterJoins():%d\n", 
0166      md->SupportsOuterJoins());
0167   printf("Bool_t SupportsFullOuterJoins():%d\n", 
0168      md->SupportsFullOuterJoins());
0169   printf("Bool_t SupportsLimitedOuterJoins():%d\n", 
0170      md->SupportsLimitedOuterJoins());
0171   printf("TString GetSchemaTerm():%s\n", 
0172      md->GetSchemaTerm().Data());
0173   printf("TString GetTableTerm():%s\n", 
0174      md->GetTableTerm().Data());
0175   printf("TString GetProcedureTerm():%s\n", 
0176      md->GetProcedureTerm().Data());
0177   printf("TString GetCatalogTerm():%s\n", 
0178      md->GetCatalogTerm().Data());
0179   printf("Bool_t IsCatalogAtStart():%d\n", 
0180      md->IsCatalogAtStart());
0181   printf("TString GetCatalogSeparator():%s\n", 
0182      md->GetCatalogSeparator().Data());
0183   printf("Bool_t SupportsSchemasInDataManipulation():%d\n", 
0184      md->SupportsSchemasInDataManipulation());
0185   printf("Bool_t SupportsSchemasInProcedureCalls():%d\n", 
0186      md->SupportsSchemasInProcedureCalls());
0187   printf("Bool_t SupportsSchemasInTableDefinitions():%d\n", 
0188      md->SupportsSchemasInTableDefinitions());
0189   printf("Bool_t SupportsSchemasInIndexDefinitions():%d\n", 
0190      md->SupportsSchemasInIndexDefinitions());
0191   printf("Bool_t SupportsSchemasInPrivilegeDefinitions():%d\n", 
0192      md->SupportsSchemasInPrivilegeDefinitions());
0193   printf("Bool_t SupportsCatalogsInDataManipulation():%d\n", 
0194      md->SupportsCatalogsInDataManipulation());
0195   printf("Bool_t SupportsCatalogsInProcedureCalls():%d\n", 
0196      md->SupportsCatalogsInProcedureCalls());
0197   printf("Bool_t SupportsCatalogsInTableDefinitions():%d\n", 
0198      md->SupportsCatalogsInTableDefinitions());
0199   printf("Bool_t SupportsCatalogsInIndexDefinitions():%d\n", 
0200      md->SupportsCatalogsInIndexDefinitions());
0201   printf("Bool_t SupportsCatalogsInPrivilegeDefinitions():%d\n", 
0202      md->SupportsCatalogsInPrivilegeDefinitions());
0203   printf("Bool_t SupportsPositionedDelete():%d\n", 
0204      md->SupportsPositionedDelete());
0205   printf("Bool_t SupportsPositionedUpdate():%d\n", 
0206      md->SupportsPositionedUpdate());
0207   printf("Bool_t SupportsSelectForUpdate():%d\n", 
0208      md->SupportsSelectForUpdate());
0209   printf("Bool_t SupportsStoredProcedures():%d\n", 
0210      md->SupportsStoredProcedures());
0211   printf("Bool_t SupportsSubqueriesInComparisons():%d\n", 
0212      md->SupportsSubqueriesInComparisons());
0213   printf("Bool_t SupportsSubqueriesInExists():%d\n", 
0214      md->SupportsSubqueriesInExists());
0215   printf("Bool_t SupportsSubqueriesInIns():%d\n", 
0216      md->SupportsSubqueriesInIns());
0217   printf("Bool_t SupportsSubqueriesInQuantifieds():%d\n", 
0218      md->SupportsSubqueriesInQuantifieds());
0219   printf("Bool_t SupportsCorrelatedSubqueries():%d\n", 
0220      md->SupportsCorrelatedSubqueries());
0221   printf("Bool_t SupportsUnion():%d\n", 
0222      md->SupportsUnion());
0223   printf("Bool_t SupportsUnionAll():%d\n", 
0224      md->SupportsUnionAll());
0225   printf("Bool_t SupportsOpenCursorsAcrossRollback():%d\n", 
0226      md->SupportsOpenCursorsAcrossRollback());
0227   printf("Bool_t SupportsOpenStatementsAcrossCommit():%d\n", 
0228      md->SupportsOpenStatementsAcrossCommit());
0229   printf("Bool_t SupportsOpenStatementsAcrossRollback():%d\n", 
0230      md->SupportsOpenStatementsAcrossRollback());
0231   printf("Int_t GetMaxBinaryLiteralLength():%d\n", 
0232      md->GetMaxBinaryLiteralLength());
0233   printf("Int_t GetMaxCharLiteralLength():%d\n", 
0234      md->GetMaxCharLiteralLength());
0235   printf("Int_t GetMaxColumnNameLength():%d\n", 
0236      md->GetMaxColumnNameLength());
0237   printf("Int_t GetMaxColumnsInGroupBy():%d\n", 
0238      md->GetMaxColumnsInGroupBy());
0239   printf("Int_t GetMaxColumnsInIndex():%d\n", 
0240      md->GetMaxColumnsInIndex());
0241   printf("Int_t GetMaxColumnsInOrderBy():%d\n", 
0242      md->GetMaxColumnsInOrderBy());
0243   printf("Int_t GetMaxColumnsInSelect():%d\n", 
0244      md->GetMaxColumnsInSelect());
0245   printf("Int_t GetMaxColumnsInTable():%d\n", 
0246      md->GetMaxColumnsInTable());
0247   printf("Int_t GetMaxConnections():%d\n", 
0248      md->GetMaxConnections());
0249   printf("Int_t GetMaxCursorNameLength():%d\n", 
0250      md->GetMaxCursorNameLength());
0251   printf("Int_t GetMaxIndexLength():%d\n", 
0252      md->GetMaxIndexLength());
0253   printf("Int_t GetMaxSchemaNameLength():%d\n", 
0254      md->GetMaxSchemaNameLength());
0255   printf("Int_t GetMaxProcedureNameLength():%d\n", 
0256      md->GetMaxProcedureNameLength());
0257   printf("Int_t GetMaxCatalogNameLength():%d\n", 
0258      md->GetMaxCatalogNameLength());
0259   printf("Int_t GetMaxRowSize():%d\n", md->GetMaxRowSize());
0260   printf("Bool_t DoesMaxRowSizeIncludeBlobs():%d\n", 
0261      md->DoesMaxRowSizeIncludeBlobs());
0262   printf("Int_t GetMaxStatementLength():%d\n", 
0263      md->GetMaxStatementLength());
0264   printf("Int_t GetMaxStatements():%d\n", 
0265      md->GetMaxStatements());
0266   printf("Int_t GetMaxTableNameLength():%d\n",
0267      md->GetMaxTableNameLength());
0268   printf("Int_t GetMaxTablesInSelect():%d\n", 
0269      md->GetMaxTablesInSelect());
0270   printf("Int_t GetMaxUserNameLength():%d\n",
0271      md->GetMaxUserNameLength());
0272   printf("Int_t GetDefaultTransactionIsolation():%d\n", 
0273      md->GetDefaultTransactionIsolation());
0274   printf("Bool_t SupportsTransactions():%d\n", 
0275      md->SupportsTransactions());
0276         
0277   printf("Bool_t SupportsDataDefinitionAndDataManipulationTransactions():%d\n", 
0278      md->SupportsDataDefinitionAndDataManipulationTransactions());
0279         
0280   printf("Bool_t SupportsDataManipulationTransactionsOnly():%d\n", 
0281      md->SupportsDataManipulationTransactionsOnly());
0282   printf("Bool_t DataDefinitionCausesTransactionCommit():%d\n", 
0283      md->DataDefinitionCausesTransactionCommit());
0284   printf("Bool_t DataDefinitionIgnoredInTransactions():%d\n", 
0285      md->DataDefinitionIgnoredInTransactions());
0286   
0287   printf("looking at columns of %s\n",tableName.Data());
0288   TString query = "select * from ";
0289   query += tableName + " where 1=0;";
0290   TSQLStatement* stmt = myConnection->CreateStatement();
0291   TSQLResultSet *rs2 =stmt->ExecuteQuery( query);
0292    
0293   TSQLResultSetMetaData *rsmd = rs2->GetMetaData();
0294   int numCols = rsmd->GetColumnCount();
0295 
0296   for(int i=1; i<= numCols; i++)
0297     {
0298        
0299       printf( "col name= '%s' type = '%s' \n",
0300           rsmd->GetColumnName(i).Data(), 
0301           rsmd->GetColumnTypeName(i).Data() );
0302        
0303     }
0304    
0305 
0306   myConnection->Close();
0307   return 0;
0308 }
0309 
0310 //___________________________________________________________________
0311 void Catch(TSQLException* e)
0312 { 
0313   // handle exceptions
0314    
0315   TString str = e->GetMessage();
0316   printf("SQL Error: %s\n",str.Data()); 
0317 }
0318 
0319 
0320 //////////////////////////// Main program ////////////////////////////////////
0321 #ifdef STANDALONE
0322 
0323 #include <TROOT.h>
0324 #include <TSystem.h>
0325 #include <iostream>
0326 
0327 //---- Main program ------------------------------------------------------------
0328 
0329 TROOT root("RDBCTestMetaData","Test RDBC TSQLDriverManager and TSQLConnection");
0330 
0331 int main(int argc, char **argv)
0332 {
0333 
0334   gSystem->Load("libRDBC");
0335   Int_t ret = -1;
0336   /* 
0337      printf("arg0:'%s'\n",argv[0]);
0338      printf("arg1:'%s'\n",argv[1]);
0339      printf("arg2:'%s'\n",argv[2]);
0340      printf("arg3:'%s'\n",argv[3]);
0341      printf("arg4:'%s'\n",argv[4]);
0342   */
0343 
0344 
0345   if(argc != 3 && argc != 5){
0346     printf ("usage: RDBCTestMetaData dsn schema [usr] [password]\n");
0347     return ret;
0348   }
0349 
0350   
0351   if(argc==3) 
0352     ret=RDBCTestMetaData(argv[1],argv[2]);
0353   if(argc==5)
0354     ret=RDBCTestMetaData(argv[1],argv[2],argv[3], argv[4]);
0355 
0356   return ret;
0357 }
0358 #endif