我的程序使用vc+ado来访问sqlserver,结果在打开数据库时老报告错误,弹出一个消息框,
内容如下:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序我试了一堆连接字符串如下:
Driver=SQLOLEDB;Database=test;Server=image;UID=sa;PWD=;
driver={SQL Server};Server=image; DATABASE=test;UID=sa;PWD=;
DSN=localserver;UID=sa;PWD=;不管连接本地数据库还是远程数据库,都报这同一个错误。相关代码如下:
m_strDbConnStr="driver={SQL Server};Server=image; DATABASE=test;UID=sa;PWD=;";
m_pConnection.CreateInstance(__uuidof(Connection));
try                 
{
m_pConnection->Open(_bstr_t(m_strDbConnStr),"","",adModeUnknown);
}
CATCH_ADO_EXCEPTIONCATCH_ADO_EXCEPTION是我定义的宏,内容是一堆catch语句这个问题应该怎样解决?

解决方案 »

  1.   

    我用的VC+ADO+SQLSERVER的连接串是这样的:
    Provider=SQLOLEDB.1;Data Source= TESTPC;User ID=sa;Password=sa;Initial Catalog=fjlz;Persist Security Info=True
    你看看有什么不同吧。
    Data Source是服务器名称
    Initial Catalog是数据库名称
      

  2.   

    按下面的步骤
    1.stdafx.h中加入
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 
    2。app文件的InitInstance中加入
    if(S_OK!=OleInitialize(NULL))
    {
    AfxMessageBox("初始化COM组件库错误");
    }
    下面就是数据库操作
    _ConnectionPtr pConn;
    _RecordsetPtr  pRs;
    CString strSQL;
    pConn.CreateInstance(__uuidof(Connection));
    pConn->CursorLocation=adUseClient;
    strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
    pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
    pRs->CursorLocation=adUseClient;
    pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
    pRs1->CursorLocation=adUseClient;
    pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
    pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);