How To Retrieving a List of All ODBC Data Sources (119064)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++ for Windows, 16-bit edition 1.5
- Microsoft Visual C++ for Windows, 16-bit edition 1.51
- Microsoft Visual C++ for Windows, 16-bit edition 1.52
- Microsoft Visual C++, 32-bit Editions 2.0
- Microsoft Visual C++, 32-bit Editions 2.1
- Microsoft Visual C++, 32-bit Editions 2.2
- Microsoft Visual C++, 32-bit Editions 4.0
- Microsoft Visual C++, 32-bit Editions 4.1
- Microsoft Visual C++, 32-bit Editions 4.2
- Microsoft Visual C++, 32-bit Editions 5.0
- Microsoft Visual C++, 32-bit Editions 6.0
- Microsoft Data Access Components 1.5
- Microsoft Data Access Components 2.0
- Microsoft Data Access Components 2.1
- Microsoft Data Access Components 2.5
- Microsoft Data Access Components 2.6
- Microsoft Data Access Components 2.7
This article was previously published under Q119064 SUMMARY
The Open Database Connectivity (ODBC) API contains a function called
SQLDataSources() which can be used to retrieve information about data
sources which are available to an application. Below is a sample function
which fills a CStringList with the names of all available ODBC data
sources.
Sample Code
#include <afxcoll.h> //Needed for CStringList MFC class.
#include "odbcinst.h"
#include "sql.h"
#include "sqlext.h"
// NOTE: in 16-bit Visual C++ link with odbcinst.lib
// in 32-bit Visual C++ 2.x link with odbccp32.lib
// in 32-bit Visual C++ 4.x no need to change link options
#define MAX_DSN_LENGTH 30
#define MAX_DSN_DESC_LENGTH 300
BOOL GetODBCDataSourceNames(CStringList * pList)
{
HENV hEnv;
char szDSN[MAX_DSN_LENGTH];
SWORD cbDSN;
UCHAR szDescription[MAX_DSN_DESC_LENGTH];
SWORD cbDescription;
RETCODE retcode;
ASSERT(pList->IsEmpty());
if (SQLAllocEnv(&hEnv)!=SQL_SUCCESS)
return FALSE;
while (retcode=SQLDataSources(hEnv, SQL_FETCH_NEXT,
(UCHAR FAR *) &szDSN, MAX_DSN_LENGTH, &cbDSN,
(UCHAR FAR *) &szDescription,MAX_DSN_DESC_LENGTH,
&cbDescription) != SQL_NO_DATA_FOUND
&&retcode!=SQL_ERROR)
{
pList->AddTail(szDSN);
}
SQLFreeEnv(hEnv);
if (retcode==SQL_ERROR)
return FALSE;
return TRUE;
}
Modification Type: | Minor | Last Reviewed: | 7/15/2004 |
---|
Keywords: | kbcode kbDatabase kbhowto kbProgramming KB119064 |
---|
|