为什么小弟我用VC++ 6.0 连接不上SQL sever 2005

为什么我用VC++ 6.0 连接不上SQL sever 2005?
运行的代码:
  CoInitialize(NULL); //初始化COM库
_ConnectionPtr pConn(__uuidof(Connection)); 
_RecordsetPtr pRst(__uuidof(Recordset));

pConn->ConnectionString="Provider=SQLOLEDB.1;Password=12345678henry;Persist Security Info=True;User ID=sa;Initial Catalog=机床实时监控信息;Data Source=AD48BAD6679A475\SQLEXPRESS";
  //为数据库连接对象的连接字符串赋值
pConn->Open(" "," "," ",adConnectUnspecified);  
pRst=pConn->Execute("select * from 总表",NULL,adCmdText); 
  while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("加工零件号"));
 
pRst->MoveNext();
}
  pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();

 但是运行进行连接时出现错误提示!希望各位高手指点迷津!

------解决方案--------------------
什么错误提示呀?你确认是没连接上数据库?
------解决方案--------------------
先把异常捕捉下来,再看看是什么错误,也好定位啊!
用ADO,一定要try catch。
另外,用其他的数据库连接工具试验一下,是不是能连上,排除数据库服务本身的问题。
Windows自带的“管理工具-〉数据源(ODBC)”也是一个可用测试的链接客户端。
------解决方案--------------------
ConnectionString问题,将Data Source换成指定IP地址。


------解决方案--------------------
vcpConn->Open(" "," "," ",adConnectUnspecified);
open里应该是需要填入如:
//数据库服务器(local),数据库名staff,用户名sa,密码sa
这样的数据库的数据的吧,你这样是空的啊。

------解决方案--------------------
[Quote=引用:]
ConnectionString问题,将Data Source换成指定IP地址。 

如果是本机Data Source=.或Data Source=(local)
如果是远程Data Source=指定IP地址
------解决方案--------------------
m_pConnection->Open("Driver={SQL Server};Server=192.168.40.106;Database=Account;User ID=sa;PWD=123456","","",adModeUnknown);
------解决方案--------------------
楼主写得没有错,可以这么用的,但是你后面的Open时的" "空格不正确,中间不能有空格,而是空: ""
所以将你的三对双引号中的空格去掉就可以了,你试一下:
pConn->Open(" "," "," ",adConnectUnspecified);
改为:
pConn->Open("","","",adConnectUnspecified);
//如果还是连不上,就再将后面的adConnectUnspecified换成:adModeUnknown试试。

不过我还是建议用我下面这种方法,你只要将IP改为你的实例名就可以了:
C/C++ code

//定义数据库连接字符串     
_bstr_t ConnectionStr ="Provider=sqloledb;Network Library=DBMSSOCN;Initial Catalog=数据库的名称;User ID=sa;Password=数据库的密码;Data Source=172.16.211.1,1433";
    HRESULT   hr;   
    try   
       {   
         hr=pConn.CreateInstance(__uuidof(Connection));   
         if(SUCCEEDED(hr))   
         {   
             //不使用DNS,而是使用了SQL的实例方法,打开数据库连接
               pConn->ConnectionTimeout = 5;///设置超时时间为5秒
          hr=pConn->Open(ConnectionStr, "", "", adModeUnknown);
         }   
         if(SUCCEEDED(hr))   
        {   
           //成功
         }      
      }
    catch(_com_error &e)
    {
          ADOError(e,""); //显示错误的原因,函数在后,你要将定义复制一下放在文件头处否则编译会出错
      return FALSE;
    }

void ADOError(_com_error &e,CString strFirstLineText="") //显示ADO错误信息
{
    ::CoUninitialize(); //先释放COM对象

         _bstr_t bstrSource(e.Source());
         _bstr_t bstrDescription(e.Description());
         CString str;
         str.Format("Code = %08lx", e.Error());
         str += "\nMsg: ";   
         str += e.ErrorMessage();
         str += "\nSource: "; 
         str += bstrSource;
         str += "\nDescription: "; 
         str += bstrDescription;

         if (strFirstLineText=="") 
         {
              str = "数据库发生错误,信息如下:\n"+str;
         }
         else
         {
              str = strFirstLineText+str;
         }
         AfxMessageBox(str);
}