用C++来访问SQL2005 时出现这样的错误: 对象名 “ XXXXX "无效       (XXXXX为数据库中表的名字)
接在后面还有一个  “对象关闭时,不允许操作”   的错误....
在前面估计已经用connection的对象正常连接上了SQL的了......!希望各位大侠不吝赐教!!

解决方案 »

  1.   

    程序里的表和数据库的表不一致,SQL2005好像有个设置区分大小写的。
      

  2.   

    单步调试一下,定位出错代码,如果你找不到出错原因,把出错代码附近的几行代码都发到论坛上来..
    另外,所有对数据库对象属性的设置都必须在调用open打开数据库之前执行..
      

  3.   

    void CTest111Dlg::OnInsert() 
    {
    // TODO: Add your control notification handler code here
    UpdateData(false);
    CString RECstr="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Data Source=XIE";
    pcon.CreateInstance("ADODB.Connection");
    pcon->Open((_bstr_t)RECstr,"","",adModeUnknown);
    CString SQLstr="insert into [student](SNO,Sname,Ssex)values('";
    // UpdateData(TRUE);
    SQLstr+=m_NO;
    SQLstr+="','";
    SQLstr+=m_name;
    SQLstr+="','";
    SQLstr+=m_sex;
    SQLstr+="')";
    UpdateData(TRUE);
    AfxMessageBox(SQLstr);
    if(FAILED(prec.CreateInstance("ADODB.Recordset")))    //链接数据库
    {
    AfxMessageBox("Create Instance failed!");        
    return;
    }
    try
    {
    prec->Open((_variant_t)SQLstr,pcon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.Description());
    }
    }这是我对话框中按钮的响应函数,红色字段是错误的语句。pcon为Connection的对象prec是RecdorSet的对象。
      

  4.   

    执行插入语句应该是:
    _variant_t RecordsAffected;
    try
    {
    if(m_pConnection==NULL)
         OnInitADOConn();
         m_pConnection->Execute(bstrSQL,NULL,adCmdText);return true;
    }
    catch(_com_error e)
    {
    e.Description();
    return false;
    }
      

  5.   

    CString SQLstr="insert into [student](SNO,Sname,Ssex)values('";后面就没有了?? 这条SQL语句拼写不全啊~~~
      

  6.   

    后面有啊,
    SQLstr+=m_NO;
    SQLstr+="','";
    SQLstr+=m_name;
    SQLstr+="','";
    SQLstr+=m_sex;
    SQLstr+="')"; 楼主,可以把你的sql打出来看看是否正确
    另外如果是插入语句,没必要打开记录集的
      

  7.   

    sql查询语句是没问题的,我直接从SQL2005那里直接copy过来的语句还是这样的错误!!
    然后您说的记录集是不是RecordSet对象的实例化啊?
    假如是不打开有什么办法执行我的SQL语句啊?Connection的对象只能连接到数据库而已吧?thank you ..
      

  8.   

    那语句全了,而且我换了从SQL2005 能执行的语句过去还是那样的错误.......
      

  9.   

    1.你用m_pConnection->Execute执行插入语句
    2.可能不一定是这错,你是不是后面写了记录集的关闭操作??
      

  10.   

    还是不行!!也不知道是不是我操作出错了!!
    我也没用过关闭的操作...
    现在也不知道是不是没连接上了,将SQL的命令语句改为创建数据库的时候,说是我go的地方有语法错误了!!我在SQL2005里面那语句是没问题的...
    我的C++和SQL2005都是在虚拟机里面的,不知道这样会不会对连接有影响!?
    还有一个问题是我在用 odbc 来编程时选择的数据库的表时在 classView 中没有看见我的表的 各属性 的,但一样的操作在我同学的电脑上可以看到的!!
    这两天都在忙着一些其他活动,没有及时回帖了!对不起!期待您的回帖!!谢谢!