我想问一下不用配置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数据源.执行后就出现异常是怎么回事?

解决方案 »

  1.   

    连SQL不需要数据源啊!
    很可能是你的连接字符串有问题!
      

  2.   

    ADO连接,直接连数据库服务中的数据库就可以了
    比如
    strConnect = "Provider=SQLOLEDB.1;Data Source=sql server服务名;Initial Catalog=数据库名;user id = sa; password = ";
      

  3.   

    if(!AfxOleInit())
    {
    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环境下才能成功
      

  4.   

    这好象是ADO的访问方式,
    对COM初始话,
    怎么又ODBC了?