调用Recordset的Delete方法为什么会出错?(附详细代码)
Cacar 2007-08-17 02:31:30 就是在ListBox中选择一条,然后用Delete方法将该条记录删除
------------------------------------
int index;
HRESULT hr;
index=((CListBox*)GetDlgItem(IDC_LIST1))->GetCurSel(); ////获取所选记录在listbox中的索引号
((CListBox*)GetDlgItem(IDC_LIST1))->GetText(index,m_record); ////将索引号对应的记录值赋给m_record
m_pRst=m_pConn->Execute("Select * from employees",NULL,adCmdText); ////
hr = m_pRst->MoveFirst();
if(FAILED(hr))
{
MessageBox("失败!");
}
CString str;
while (!m_pRst->rsEOF)
{
str = (char*)(_bstr_t)m_pRst->GetCollect("email");
if (m_record==str)
{
try
{
//m_pRst->Move(2);
m_pRst->Filter = "email = 'SKING'";
hr = m_pRst->Delete(adAffectCurrent);
if(FAILED(hr))
{
MessageBox("失败!");
}
m_pRst->Update();
MessageBox("删除成功!");
}
catch(_com_error e) ////捕捉连接异常
{
CString err;
err.Format("删除纪录失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(err);
return ;
}
break;
}
else
{
m_pRst->MoveNext();
}
}
-------------------
m_Rst和m_Conn是类成员,
声明:_ConnectionPtr m_pConn;
_RecordsetPtr m_pRst;
在InitDialog的时候进行连接
::CoInitialize(NULL);
m_pConn.CreateInstance(__uuidof(Connection));
m_pRst.CreateInstance(__uuidof(Recordset));
m_pConn->ConnectionString="Provider=OraOLEDB.Oracle;UserID=hr;Password=noodles;Data Source=XE_123.4.181.72";////连接字符串
m_pConn->ConnectionTimeout = 10;/////设置连接超时时间
if (FAILED(m_pConn->Open("","hr","noodles",adConnectUnspecified))) ////打开数据库并判断是否成功
{
return FALSE;
}