运行时显示的错误
ERROR:[DBNETLIB][connectionOpen(connect()).]SQL Server不存在或拒绝访问。
同时出现下面的输出信息:SQLdatebase.exe 中的 0x7c812afb (kernel32.dll) 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012f8ec 处的 _com_error。int   main() 

 cout   <<  "enter main\n "; 
        STU   student; 
        ::CoInitialize(NULL);   //   初始化OLE/COM库环境   ,为访问ADO接口做准备 
        
        _RecordsetPtr   m_pRecordset( "ADODB.Recordset"); 
        _ConnectionPtr   m_pConnection( "ADODB.Connection"); 
        cout   <<  "begin select\n "; 
        _bstr_t   bstrSQL( "select   *   from   stu_info ");   //查询语句 
        char   *   query_cmd   =   "DELETE   FROM   stu_info   WHERE   sname   =   '本拉登' "; 
 cout   <<  "enter try\n "; 
 try 
 { 
    //   创建Connection对象 
    m_pConnection.CreateInstance( "ADODB.Connection "); 
    //   设置连接字符串,必须是BSTR型或者_bstr_t类型 
    _bstr_t   strConnect=   "Provider=SQLOLEDB; Server=(local); Database=student; uid=zhouxicai; pwd=123456; "; 
    //若数据库在网络上则Server为形如(192.168.1.5,3340) 用户sa和密码123只是针对我的库 
 cout   <<  "正在打开学生库\n ";  //显示本句后,程序停顿。。后面的语句均没显示,过一会程序自动退出
    m_pConnection->Open(strConnect, " ", " ",adModeUnknown); 
 cout   <<  "打开学生库结束\n "; 
    if(m_pConnection==NULL) cerr<<"Lind   data   ERROR!\n ";
 cout   <<  "正在创建记录集对象\n ";      
    //   创建记录集对象 
    m_pRecordset.CreateInstance(__uuidof(Recordset)); 
 cout   <<  "创建记录集对象结束\n "; 发在数据库版的链接:
http://topic.csdn.net/u/20111101/10/e63b7f0d-eaca-43c9-9884-67e0b4adb4d0.html?31718

解决方案 »

  1.   

    从提示看,应该是数据库连接错误.
    检查一下你的那个连接字符串是否正确,且数据库允许SQL SERVER 用户登录.
      

  2.   

     "Provider=SQLOLEDB; Server=服务器名\\实例名; Database=student
      

  3.   

    请确认SQL是否安装在本机且是否为默认实例
      

  4.   

    select @@SERVERNAME--服务器名
    select @@SERVICENAME--实例名
      

  5.   

    修改成这样还是不行 server=127.0.0.1
      

  6.   


    这样,要允许了TCP/IP连接.
    试试:server=(local)
      

  7.   

    都试过了,还是连不上,加了这句后 server=ICHIGO\SQLEXPRESS; 也连不上?不知道怎么办了
      

  8.   

    大哥你的方法管用了!但是出现新的问题,
    运行中显示:ERROR:在对应所需名称或序数的集合中,未找到项目
    后面语句的语句执行了,但是数据库里的数据没有打印出来? m_pRecordset->Open(bstrSQL , m_pConnection.GetInterfacePtr(), adOpenDynamic , adLockOptimistic , adCmdText ); 
     cout   <<  "正在准备打印数据\n ";   
    _variant_t   vsnum,vsname,vsage,vssex,vsmajor;   //对应库中的snum,sname,sage,ssex,smajor 
    cout<<"学号   姓名   年龄   姓别   专业 ";
    cout<<"\n----------------------------------------------------------------\n ";
    //程序一直运行到这里,出现了这样的提示“ERROR:在对应所需名称或序数的集合中,未找到项目

    while   (!m_pRecordset->EndOfFile) 

    vsnum    =   m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以 
    vsname   =   m_pRecordset->GetCollect( "sname "); 
    vsage    =   m_pRecordset->GetCollect( "sage "); 
    vssex    =   m_pRecordset->GetCollect( "ssex "); 
    vsmajor  =   m_pRecordset->GetCollect( "smajor "); 
    if   (vsnum.vt   !=   VT_NULL   &&   vsname.vt   !=   VT_NULL   &&   vsage.vt   !=   VT_NULL 
    &&   vssex.vt   !=   VT_NULL   &&   vsmajor.vt   !=   VT_NULL) 

    cout.setf(ios::left); 
    cout   <<  setw(14)  <<  (char*)(_bstr_t)vsnum; 
    cout   <<  setw(14)  <<  (char*)(_bstr_t)vsname; 
    cout   <<  setw(8)   <<  vsage.lVal; 
    cout   <<  setw(8)   <<  (char*)(_bstr_t)vssex; 
    cout   <<  setw(20)  <<  (char*)(_bstr_t)vsmajor; 
    cout.unsetf(ios::left); 
    cout   <<  endl; 

    m_pRecordset->MoveNext();   ///移到下一条记录 

    cout   <<  "\n----------------------------------------------------------------\n "; 
    cout   <<  "\n请输入你要添加的学生信息\n "; 
    cout   <<  "学号: "; 
    cin    >>   student.snum; 
    cout   <<  "\n姓名: "; 
    cin    >>   student.sname; 
    cout   <<  "\n年龄: "; 
    cin    >>   student.sage; 
    cout   <<  "\n姓别: "; 
    cin    >>   student.ssex; 
    cout   <<  "\n专业: "; 
    cin    >>   student.smajor; 
    m_pRecordset->MoveFirst();   //移动到第一条记录 
    m_pRecordset->AddNew();   ///添加新记录 
    m_pRecordset->PutCollect( "snum ",_variant_t(student.snum)); 
    m_pRecordset->PutCollect( "sname ",_variant_t(student.sname)); 
    m_pRecordset->PutCollect( "sage ",_variant_t(student.sage)); 
    m_pRecordset->PutCollect( "ssex ",_variant_t(student.ssex)); 
    m_pRecordset->PutCollect( "smajor ",_variant_t(student.smajor)); 
    m_pRecordset->Update(); 
     
    m_pConnection->Execute(query_cmd,NULL,1);   //用Execute执行sql语句来删除 
    m_pRecordset->Close();   //   关闭记录集