如何枚举得到ODBC中所有存在的DSN的名称?用什么函数呢,最好给一段简单的代码,谢谢。

解决方案 »

  1.   

    SQLDataSources(HENV henv,int nFalg,/*SQL_FETCH_FIRST_SYSTEM,etc/
    LPSTR Server,int nServerSize,int *RetSizeServer,
    LPSTR Descript,int nSizeDescript,int *RetSizeDescript);
      

  2.   

    UWORD fDirection = SQL_FETCH_FIRST;
    SQLRETURN retcode;
    SQLCHAR szDSN[SQL_MAX_DSN_LENGTH + 1];
    SQLCHAR szDescription[100];while (retcode == SQL_SUCCESS)
    {
        retcode = SQLDataSources(henv, fDirection, 
                                 (UCHAR *)szDSN,
                                 sizeof(szDSN), NULL, 
                                 (UCHAR *)szDescription, 
                                 sizeof(szDescription), NULL);
        fDirection = SQL_FETCH_NEXT;    if (retcode != SQL_SUCCESS)
             TRACE("SQLData Sources return: %d", retcode);
        else
             TRACE("DSN:[%s](%d) Desc:[%s](%d)",
                   szDSN, swLen, szDescription, swLen2);
    }
      

  3.   

    你所想要的东西放在注册表的如下位置中:
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources
    ,然后使用RegEnumValue就可以了。