一个关于得到数据源总数以及名字的函数:
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;
}
/但是问题又出现了 这个方法 只能得到 局域网内的 数据源 本地的是得不到的 头痛啊。。。。