使用ado时,记录集的m_rst->AddNew()总是出错,到底是什么回事呢???

解决方案 »

  1.   

    void CADOTest_FromVCKDlg::OnAdditem()
    {
    _variant_t vUsername,vBirthday,vID,vOld;
    bool isb=UpdateData();

    if(m_username!="")
    {
    if(m_username.GetLength()>0)
    {
    m_rst->AddNew();
    m_CurrentSel=m_userlist.InsertItem(0xffff,"");

    vUsername=(_variant_t)m_username;
    vID=(long)m_userid;
    vOld=(long)m_userold;
    vBirthday=(_variant_t)m_userbirthday; m_rst->PutCollect("id",vID);
    m_rst->PutCollect("username",vUsername);
    m_rst->PutCollect("old",vOld);
    m_rst->PutCollect("birthday",vBirthday);

    m_userlist.SetItem(m_CurrentSel,0,LVIF_TEXT,(_bstr_t)vID,NULL,0,0,0);
    m_userlist.SetItem(m_CurrentSel,1,LVIF_TEXT,(_bstr_t)vUsername,NULL,0,0,0);
    m_userlist.SetItem(m_CurrentSel,2,LVIF_TEXT,(_bstr_t)vOld,NULL,0,0,0);
    m_userlist.SetItem(m_CurrentSel,3,LVIF_TEXT,(_bstr_t)vBirthday,NULL,0,0,0);
    }
    }
    else
    {
    MessageBox("没有输入,用户名!");
    }
    }
      

  2.   

    不对,在m_rst->AddNew();处,就出错了。
      

  3.   

    m_rst的打开方式?那就是前面的代码有错,
      

  4.   

    你打开记录集是用的adLockType 参数用的是什么??
      

  5.   

    你该用TRY{} CATCH(){}
    那样比较容易查错
      

  6.   

    如果用默认的方式打开ADO那就应该可以,你可以用open() canappend()addnew() update()close()样的顺序操作ADO,还可以使用Query()来查寻ADO结果
      

  7.   

    1,可能数据库的打开模式是只读的
    2,打开记录集的时候, SQL 语句不合适