我想问一下不用配置ODBC数据源能不能直接连接到SQL数据库?
例如:
m_StrCon=_T("Data Source=ZHJXIAO;Initial Catalog=test;User ID=sa");
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
HRESULT m_hResult;
try{
m_hResult=m_pCon.CreateInstance(_T("ADODB.Connection"));
m_pCon->ConnectionTimeout=100;
m_hResult=m_pCon->Open(_bstr_t((LPCTSTR)m_StrCon),_T(""),_T(""),adModeUnknown);
}catch(_com_error e){
CString m_Error;
m_Error.Format(_T("连接数据失败:%s"),e.ErrorMessage());
AfxMessageBox(m_Error);
return FALSE;
}
在InitInstance函数中写了以上的代码,
它的连接到SQL中的Test数据库上,但没有配置ODBC数据源.执行后就出现异常是怎么回事?
例如:
m_StrCon=_T("Data Source=ZHJXIAO;Initial Catalog=test;User ID=sa");
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
HRESULT m_hResult;
try{
m_hResult=m_pCon.CreateInstance(_T("ADODB.Connection"));
m_pCon->ConnectionTimeout=100;
m_hResult=m_pCon->Open(_bstr_t((LPCTSTR)m_StrCon),_T(""),_T(""),adModeUnknown);
}catch(_com_error e){
CString m_Error;
m_Error.Format(_T("连接数据失败:%s"),e.ErrorMessage());
AfxMessageBox(m_Error);
return FALSE;
}
在InitInstance函数中写了以上的代码,
它的连接到SQL中的Test数据库上,但没有配置ODBC数据源.执行后就出现异常是怎么回事?
很可能是你的连接字符串有问题!
比如
strConnect = "Provider=SQLOLEDB.1;Data Source=sql server服务名;Initial Catalog=数据库名;user id = sa; password = ";
{
AfxMessageBox("com对象初始化失败");
return false;
}
try{
m_pAdoConn.CreateInstance("ADODB.Connection");
m_pAdoConn->Open("Driver=SQL SERVER;Server=服务器名;Database=数据库名;UID=;PWD=","","",-1);
}
catch(_com_error&e)
{
CString err;
err.Format("%s",(char *)(e.Description()));
AfxMessageBox(err);
}
catch(...)
{
AfxMessageBox("Unkowned error");
}
m_pAdoSet.CreateInstance(__uuidof(Recordset));
m_pMainWnd->SetWindowText("销售管理系统");
// AfxMessageBox("连接数据库成功");
return TRUE;
m_pAdoConn,m_pAdoSet 分别是_ConnectionPtr,_RecordsetPrt型
这连接只能在MFC环境下才能成功
对COM初始话,
怎么又ODBC了?