////一個關於得到數據源總數以及名字的函數:
bool CMyOdbcBaseDlg::GetSoureServer(CStringArray &aServerList)
{
aServerList.RemoveAll();
SQLHENV _SqlENV;
SQLHDBC _SqlDBC;
short _ConnStrOut;
int iRet = 0;
bool isSuccesed = false;
///設置獲取環境句柄
iRet = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&_SqlENV);
if(iRet == SQL_SUCCESS || iRet == SQL_SUCCESS_WITH_INFO)
{
///設着 連接條件
iRet = SQLSetEnvAttr(_SqlENV,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0);
if(iRet == SQL_SUCCESS || iRet == SQL_SUCCESS_WITH_INFO)
{
///設置 連接句柄
iRet = SQLAllocHandle(SQL_HANDLE_DBC,_SqlENV,&_SqlDBC);
if(iRet == SQL_SUCCESS || iRet == SQL_SUCCESS_WITH_INFO )
{
CString strConnStrOut;
////注意這裏一點都不能錯~!“{SQL Server}“ 當初就多了一個空格什麼都找不出來哦
iRet = SQLBrowseConnect(_SqlDBC,_T("Driver={SQL Server}"),SQL_NTS, strConnStrOut.GetBuffer(4824),4824,&_ConnStrOut);
CString strSeps=_T("{}"),strServers,strServer,strToken;
int iFind = strConnStrOut.Find(_T("SERVER:Server="));
SQLDisconnect(_SqlDBC);
}
SQLFreeHandle(SQL_HANDLE_DBC, _SqlDBC);
}
SQLFreeHandle(SQL_HANDLE_ENV, _SqlENV);
}
return isSuccesed;
}
/////但是問題又出現了 這個方法 只能得到 局域網內的 數據源 本地的是得不到的 頭痛啊。。。。