SQLHENV henv;
SQLRETURN rtcode;
rtcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if(rtcode != SQL_SUCCESS)
{
SQLTCHAR Sqlstate[6];
SQLINTEGER NativeError;
SQLTCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
int i=1;
while(SQLGetDiagRec(SQL_HANDLE_ENV, henv, i, Sqlstate, &NativeError, ErrMsg, sizeof(ErrMsg), NULL) != SQL_NO_DATA)
TRACE("Diag:%d,SQLSTATE:%s,NativeError:%d, ErrMsg:%s\n", i++, Sqlstate, NativeError, ErrMsg);
}
rtcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if(rtcode != SQL_SUCCESS)
{
SQLTCHAR Sqlstate[6];
SQLINTEGER NativeError;
SQLTCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
int i=1;
while(SQLGetDiagRec(SQL_HANDLE_ENV, henv, i, Sqlstate, &NativeError, ErrMsg, sizeof(ErrMsg), NULL) != SQL_NO_DATA)
TRACE("Diag:%d,SQLSTATE:%s,NativeError:%d, ErrMsg:%s\n", i++, Sqlstate, NativeError, ErrMsg);
}
SQLTCHAR ServerName[MAX_LENTH] = {0}, Description[MAX_LENTH] = {0};
SQLSMALLINT ServerNameLength, DescNameLength;
/*rtcode = SQLDataSources(henv, SQL_FETCH_FIRST_SYSTEM, ServerName, MAX_LENTH, &ServerNameLength, Description, MAX_LENTH, &DescNameLength);*/
rtcode = SQLDataSources(henv, SQL_FETCH_FIRST_USER, ServerName, MAX_LENTH, &ServerNameLength, Description, MAX_LENTH, &DescNameLength);
if(rtcode != SQL_SUCCESS)
{
SQLTCHAR Sqlstate[6];
SQLINTEGER NativeError;
SQLTCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
int i=1;
while(SQLGetDiagRec(SQL_HANDLE_ENV, henv, i, Sqlstate, &NativeError, ErrMsg, sizeof(ErrMsg), NULL) != SQL_NO_DATA)
TRACE("Diag:%d,SQLSTATE:%s,NativeError:%d, ErrMsg:%s\n", i++, Sqlstate, NativeError, ErrMsg);
}
if(rtcode == SQL_NO_DATA)
{
TRACE("NO Data Source!");
}
else
{
m_ctlUserList.AddString((LPCTSTR)((LPCWSTR)ServerName));
do
{
rtcode = SQLDataSources(henv, SQL_FETCH_NEXT, ServerName, MAX_LENTH, &ServerNameLength, Description, MAX_LENTH, &DescNameLength);
if(rtcode != SQL_NO_DATA)
m_ctlUserList.AddString((LPCTSTR)((LPCWSTR)ServerName));
if(rtcode != SQL_SUCCESS)
{
SQLTCHAR Sqlstate[6];
SQLINTEGER NativeError;
SQLTCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
int i=1;
while(SQLGetDiagRec(SQL_HANDLE_ENV, henv, i, Sqlstate, &NativeError, ErrMsg, sizeof(ErrMsg), NULL) != SQL_NO_DATA)
TRACE("Diag:%d,SQLSTATE:%s,NativeError:%d, ErrMsg:%s\n", i++, Sqlstate, NativeError, ErrMsg);
}
}while(rtcode != SQL_NO_DATA);
}
rtcode = SQLFreeHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE);
if(rtcode != SQL_SUCCESS)
{
SQLTCHAR Sqlstate[6];
SQLINTEGER NativeError;
SQLTCHAR ErrMsg[SQL_MAX_MESSAGE_LENGTH];
int i=1;
while(SQLGetDiagRec(SQL_HANDLE_ENV, henv, i, Sqlstate, &NativeError, ErrMsg, sizeof(ErrMsg), NULL) != SQL_NO_DATA)
TRACE("Diag:%d,SQLSTATE:%s,NativeError:%d, ErrMsg:%s\n", i++, Sqlstate, NativeError, ErrMsg);
}
获取ODBC数据源
最新推荐文章于 2025-05-20 11:57:34 发布