ODBC 解析EXCEL 文件 选择worksheet name

 #include   "odbcinst.h"  
  #include   <afxdb.h>  
   
  #define   TABLE_NAME_LENGTH   100  
   
  bool   GetTables(CString   strDSN,CStringArray   &   strTableNames)  
  {  
  strDSN   =   "DSN="   +   strDSN;  
  CDatabase   database;  
  int ret=   -1;  
  HSTMT hStmt;  
  UCHAR       szName[256];  
  SDWORD     cbName;  
   
  //   缺省取用户表、参数选择视图、系统表  
  CString type   =   "'TABLE'";  
  //   通过ODBC打开数据库  
  try  
  {  
  if(   !database.OpenEx(strDSN)   )  
  return   false;  
  }  
  catch(CDBException   *   e)  
  {  
  AfxMessageBox(e->m_strError);  
  return   false;  
  }  
  //   分配Statement句柄  
  //SQLAllocStmt   (database.m_hdbc,&hStmt);  
  SQLAllocHandle   (SQL_HANDLE_STMT,database.m_hdbc,&hStmt);  
  //   获取表信息(返回一个数据表)  
  ret   =   SQLTables(hStmt,  
  NULL,SQL_NTS,  
  NULL,SQL_NTS,  
  NULL,SQL_NTS,  
  (unsigned   char   *)type.GetBuffer(0),SQL_NTS);  
  if(ret   ==   SQL_ERROR)  
  {  
  SQLFreeStmt(hStmt,SQL_CLOSE);  
  database.Close();  
  if(ret   ==     SQL_INVALID_HANDLE   )  
  {  
  AfxMessageBox("Invalid   handle");  
  return   false;  
  }  
  AfxMessageBox("Database   Could   Not   be   Open");  
  return   false;  
  }  
   
  while(1)  
  {  
  //   取数据到缓冲区  
  ret   =   SQLFetch(hStmt);  
  if(ret   ==   SQL_NO_DATA_FOUND)  
  break;  
  //   取某一列数据(第3列为表名,其他还有表属性、数据库名等)  
  ret   =   SQLGetData(hStmt,   3,   SQL_C_CHAR,   szName,   TABLE_NAME_LENGTH,   &cbName);  
  strTableNames.Add(szName);  
  }  
   
  //   释放句柄  
  SQLFreeStmt(hStmt,SQL_CLOSE);  
  database.Close();  
   
  return   true;  
  }

你可能感兴趣的:(sql,数据库,Excel,table,null,database)