ado中IDispatch error #3092是什么错误?

suji2002 2003-07-21 04:33:52
我在exe程序中用ado实现了一个数据库绑定对话框,在其中进行添加正常,但对于更新操作代码,在编译和LINK时正确,但在执行时出现IDispatch error #3092,这是什么意思?对于COM中的IDispatch在使用时应该作到哪几点呢?以下是我这段的代码。void CRsCgDlg::OnBtnCmupdate()
{
// TODO: Add your control notification handler code here
if(!UpdateData())
return;


m_pRs=NULL;
IADORecordBinding *picRs=NULL;//binding interface decared
CCustomRs rs;

try
{
CString sql_;
sql_.Format("SELECT * FROM HidKnow WHERE name=%s",m_name);
_bstr_t sql=sql_;
//constructe connection

TESTHR(m_DBCnt.CreateInstance(__uuidof(Connection)));
CString sql1_;
sql1_.Format ("Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=ConKnow;Mode=ReadWrite;Initial Catalog=KnowCoMod");
_bstr_t sql1=sql1_;
m_DBCnt->Open(sql1," "," ",-1);




TESTHR(m_pRs.CreateInstance(__uuidof(Recordset)));
m_pRs->Open(sql,_variant_t((IDispatch*)m_DBCnt,true),adOpenKeyset,adLockOptimistic,adCmdText);

TESTHR(m_pRs->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));
TESTHR(picRs->BindToRecordset(&rs));

strcpy(rs.m_sz_number,m_number);
strcpy(rs.m_sz_name,m_name);
rs.m_lcharaponum=m_charaponum;
strcpy(rs.m_sz_charaponame,m_charaponame);
strcpy(rs.m_sz_cases,m_cases);
strcpy(rs.m_sz_result,m_result);

//update data
TESTHR(picRs->Update(&rs));

picRs->Release();
m_pRs->Close();
m_DBCnt->Close();
}
catch(_com_error& e)
{
MessageBox(e.ErrorMessage());
return;
}
RefreshBoundData();


}
...全文
640 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
spwnihao 2003-11-13
  • 打赏
  • 举报
回复
//出错处理:
3127——没有找到目标表
3092——目标表已经存在
例如:
catch(const _com_error e)
{
AfxMessageBox(e.Description());
long errorCode=e.WCode();
if(3127==errorCode) AfxMessageBox("表不存在");
if(3092==errorCode) AfxMessageBox("表已经存在");
return FALSE;
}
fastxyf 2003-11-13
  • 打赏
  • 举报
回复
是SQL语名错了
sql_.Format("SELECT * FROM HidKnow WHERE name=%s",m_name);
改为sql_.Format("SELECT * FROM HidKnow WHERE name='%s'",m_name);

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧