求不用客户端装sqlserver 用VC  ado 直接连sqlserver2000数库的方法

解决方案 »

  1.   

    HRESULT hr;
    CString strConnectionString="Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=test;Data Source=";
    strConnectionString+=strIpAddr;
    try
    {
    hr=m_pConnection.CreateInstance(__uuidof(Connection));
    if(SUCCEEDED(hr))
    {
    if(m_pConnection->State)m_pConnection->Close();
    m_pConnection->ConnectionTimeout=5;
    hr=m_pConnection->Open((const char*)strConnectionString,"","",adModeUnknown);
    }
    }
    catch(_com_error e)
    {
    CString errormessage;
    errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
    #ifdef _DEBUG
    AfxMessageBox(errormessage);///显示错误信息
    #endif
    return nLoginErrSQLServer;
    }
      

  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))  //或者CoInitialize()
    {
    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);
      

  3.   

    如果客户端,根本就没装sqlserver数据库或数据库客户端,这样能访问吗?不需要什么DLL什么的吗?
      

  4.   

    下载微软数据库引擎MDAC2.7,安装。
    下载位置GOOGLE
      

  5.   

    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;301202