使用ado时,记录集的m_rst->AddNew()总是出错,到底是什么回事呢???
11 个解决方案
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("没有输入,用户名!");
}
}
不对,在m_rst->AddNew();处,就出错了。
你打开记录集是用的adLockType 参数用的是什么??
你该用TRY{} CATCH(){}
那样比较容易查错
如果用默认的方式打开ADO那就应该可以,你可以用open() canappend()addnew() update()close()样的顺序操作ADO,还可以使用Query()来查寻ADO结果
1,可能数据库的打开模式是只读的
2,打开记录集的时候, SQL 语句不合适