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;  
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值