MFC数据库连接怎么办用户名和密码中的特殊字符

MFC数据库连接怎么处理用户名和密码中的特殊字符
如题,小弟用下面的函数去测试用户输入的数据库用户名和密码是否正确

bool TestDBConnection(CString strServer, CString strUserName, CString strPwd)
{
::CoInitialize(NULL);
AdoNS::_ConnectionPtr pMyConnect = NULL;  
HRESULT hr = pMyConnect.CreateInstance(__uuidof(AdoNS::Connection));  
if (FAILED(hr)) 
{
_com_error e(hr);
MessageBox(_LoadAndReturnString(IDS_CREAT_SQL_INSTANCE_FAIL), _GetTitleBarText(), MB_OK|MB_ICONERROR);
return false;
}

CString cstrConnect;
cstrConnect.AppendFormat(_T("Provider=SQLOLEDB;Server=%s;uid=%s; pwd=%s;"),
strServer,
strUserName,
strPwd);

_bstr_t strConnect = (_bstr_t)cstrConnect;

// Test DB connection
try  
{  
pMyConnect->Open(strConnect,"","",NULL);
}  
catch(_com_error &e)  
{  
MessageBox(_LoadAndReturnString(IDS_CONNECT_SQL_ERROR), _GetTitleBarText(), MB_OK|MB_ICONERROR);
return false;
}
return true;
}

当用户名里面单引号开头的时候,数据库连接失败。请问该怎么处理特殊字符?
------解决思路----------------------
同样的字符,在代码中比较和sql中比较不一样,但是对于咱们看到的而言,都是那个字符,在C++中比较用转义字符,实际就还是原来的字符,只不过比较的时候不能直接拿来用而已
------解决思路----------------------
把正确的连接字符串写到文本中,代码中用的使用读文件获取,肯定不会出错了

出错的情况无非就是在代码中显示声明字符串时某些特殊字符需要转义而已
而且字符串有要在SQL中使用,sql中还需要转移,这样就得双重转移了