• 何遍历数据源中的表名称


     


    如何遍历数据源中的表名称
    (周星星发表于2003-10-21 23:39:22)

    [问题的提出]
    枚举表名称是个有用的功能,但在网上一时没有找到实现这种功能的代码,于是自己做了一个,特贴出源代码,一是为了资源共享,二是希望大家看看这段代码有没有不严格的地方,因为我对ODBC API不是太熟悉,谢谢!

    [源代码]
    // VC++6.0


    #include <windows.h>
    #include <sql.h>
    #include <sqlext.h>
    #include <iostream>

    // 测试一: ODBC数据源
    // const char strDsn[] = "DSN=Test;";
    // 测试二: 联接字符串
    const char strDsn[] = "DBQ=F:\\Test.xls;Driver={Microsoft Excel Driver (*.xls)};";

    void main( void )
    {
        //分配环境句柄
        SQLHENV m_henv;
        if( SQL_SUCCESS == SQLAllocEnv(&m_henv) )
        {
            //分配连接句柄
            SQLHDBC m_hdbc;
            if( SQL_SUCCESS == SQLAllocConnect(m_henv,&m_hdbc) )
            {
                // 连接数据源
                UCHAR szConnectOutput[512];
                SWORD nResult;
                if( SQL_SUCCESS == SQLDriverConnect( m_hdbc,
                                                     NULL,
                                                     (UCHAR*)strDsn,
                                                     SQL_NTS,
                                                     szConnectOutput,
                                                     sizeof(szConnectOutput),
                                                     &nResult,
                                                     SQL_DRIVER_COMPLETE ) )
                {
                    SQLHSTMT hstmt = NULL;
                    if( SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_STMT,
                                                      m_hdbc,
                                                      &hstmt) )
                    {
                        if( SQL_SUCCESS == SQLTables( hstmt,
                                                      NULL,
                                                      0,
                                                      NULL,
                                                      0,
                                                      NULL,
                                                      0,
                                                      NULL,
                                                      0) )
                        {
                            SDWORD cb;
                            char szTable[255];
                            char szTableType[255];
                            SQLBindCol( hstmt, 3, SQL_C_CHAR, szTable, 255, &cb );
                            SQLBindCol( hstmt, 4, SQL_C_CHAR, szTableType, 255, &cb );
                            while( SQL_SUCCESS == SQLFetch(hstmt) )
                            {
                                std::cout << szTableType << " [" << szTable << "]" << std::endl;
                            }
                        }
                        SQLFreeHandle( SQL_HANDLE_STMT, hstmt );
                    }
                }
                SQLDisconnect( m_hdbc );
            }
            SQLFreeHandle( SQL_HANDLE_ENV, m_henv );
        }
    }

    最新评论 [发表评论]  查看所有评论  推荐给好友  打印

     怎样得到各列任意的一个信息?例如:
    字段名为号码,分别为1,2,3
    要获得怎样3的信息?

     我接触过一段时间VC,现在正在调数据库,希望大家能指点一下, ( wenmang007 发表于 2004-6-21 0:53:00)

     这篇文章我觉得要是能详细 些就very good! ( 979710 发表于 2004-5-12 14:33:00)

     怎样得到各列任意的一个信息?例如:
    字段名为号码,分别为1,2,3
    要获得怎样3的信息?
    也可以发往我的邮箱探讨一下,谢谢。

     把SQLTables换成SQLColumns可以得到各列信息,包括字段名、字段类型、默认值、长度、说明等等。使用方式类似原贴代码,只要把不同的列绑定一下就好了。 ( Margrave 发表于 2003-10-24 16:06:00)

     to qiuzf:我知道ADO比ODBC更底层地控制数据库,理论上应该效率更高,但ADO(OLE DB)不该(个人意见)搭在COM之上,这是ADO的致命之伤(还是个人意见),而ODBC却可以跨语言,跨操作系统。我喜欢ODBC,呵呵! ( 周星星 发表于 2003-10-23 14:50:00)

     Ado 里面有 OpenSchema 方法可以等到表名. ( qiuzf 发表于 2003-10-23 12:53:00)

     GOOD! ( 在下无名 发表于 2003-10-22 19:19:00)

    .......................................................
    More... 


     
    Copyright © 2006 VCKBASE.COM All rights reserved.

  • 相关阅读:
    android ndk 调试问题
    音频
    文件分割与c语言文件结
    本机抓包
    rtm匹 转
    mac 工具等效率
    【MySQL】Explain Tutorial
    Sed基本入门[5] Sed Hold and Pattern Space Commands
    Sed基本入门[3] Regular Expressions
    Protocol Buffer Basics
  • 原文地址:https://www.cnblogs.com/niuniu502/p/590292.html
Copyright © 2020-2023  润新知