00001 /* 00002 openMySqlCatalog.cpp 00003 00004 */ 00005 #include "openMyDB.h" 00006 #include "openCatalog.h" 00007 00008 openCatalog::openCatalog( string connectstring ):m_pDB(0),m_pRS(0) 00009 { 00010 m_connectstring = connectstring; 00011 mySqlDB * mydb = new mySqlDB( m_connectstring); 00012 if( mydb ) 00013 { 00014 m_pDB = mydb; 00015 m_pRS = new mySqlRS(*mydb); 00016 } 00017 } 00018 00019 openCatalog::~openCatalog() 00020 { 00021 delete m_pRS; 00022 delete m_pDB; 00023 } 00024 00025 bool openCatalog::open() 00026 { 00027 bool bret = false; 00028 string sql = "show tables"; 00029 00030 bret = m_pRS->open(sql); 00031 if( bret ) 00032 { 00033 m_name = m_pRS->getField(0).format(); 00034 } 00035 return bret; 00036 } 00037 bool openCatalog::next() 00038 { 00039 bool bret = m_pRS->next(); 00040 if( bret ) 00041 { 00042 m_name = m_pRS->getField(0).format(); 00043 } 00044 return bret; 00045 } 00046 bool openCatalog::close() 00047 { 00048 return m_pRS->close(); 00049 } 00050 openFields & openCatalog::fieldsList() 00051 { 00052 m_fields.clear(); 00053 string sql = "show fields from "; 00054 sql += m_name; 00055 00056 // clone the db and rs 00057 mySqlDB clonedDB( m_connectstring ); 00058 mySqlRS freshRS(clonedDB); 00059 if( freshRS.open(sql) ) 00060 { 00061 do 00062 { 00063 openField fld; 00064 fld.name(freshRS.getField(0).format()); 00065 fld.type(freshRS.getField(1).format()); 00066 m_fields.push_back(fld); 00067 } while( freshRS.next() ); 00068 } 00069 00070 freshRS.close(); 00071 return m_fields; 00072 } 00073 string & openCatalog::name() 00074 { 00075 return m_name; 00076 }
1.5.5