源代码:
void CStuCourse::OnOK()
{
// TODO: Add extra validation here _RecordsetPtr pRs=NULL;
_ConnectionPtr pConnection=NULL; HRESULT hr;
CString TempStr;
_bstr_t strCnn(SQLCONSTR);
try
{
UpdateData(TRUE);
pConnection.CreateInstance(__uuidof(Connection));
hr=pConnection->Open(strCnn,"","",NULL);
pRs.CreateInstance(__uuidof(Recordset)); CString StrKCH;
GetDlgItemText(IDC_COMBOKCH,StrKCH); CString SqlStr;
SqlStr.Format("select * from kc where kch='%s'",StrKCH);
pRs->Open((_variant_t)SqlStr,_variant_t((IDispatch *)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);
if(!pRs->adoEOF)
{
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();
}
else
{
pRs->AddNew();
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();
}
pRs->Close();
pConnection->Close();
m_StuCourseADO.SetRecordSource("select * from kc");
m_StuCourseADO.Refresh();
m_StuCourseDG.ReBind();
m_StuCourseDG.Refresh();
AfxMessageBox("更新成功!");
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description()); CString sError;
sError.Format("Source:%Description:%s",(LPCSTR)bstrSource,(LPCSTR)bstrDescription); AfxMessageBox(sError);
pConnection->Close();
}
CDialog::OnOK();
}
void CStuCourse::OnOK()
{
// TODO: Add extra validation here _RecordsetPtr pRs=NULL;
_ConnectionPtr pConnection=NULL; HRESULT hr;
CString TempStr;
_bstr_t strCnn(SQLCONSTR);
try
{
UpdateData(TRUE);
pConnection.CreateInstance(__uuidof(Connection));
hr=pConnection->Open(strCnn,"","",NULL);
pRs.CreateInstance(__uuidof(Recordset)); CString StrKCH;
GetDlgItemText(IDC_COMBOKCH,StrKCH); CString SqlStr;
SqlStr.Format("select * from kc where kch='%s'",StrKCH);
pRs->Open((_variant_t)SqlStr,_variant_t((IDispatch *)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);
if(!pRs->adoEOF)
{
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();
}
else
{
pRs->AddNew();
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();
}
pRs->Close();
pConnection->Close();
m_StuCourseADO.SetRecordSource("select * from kc");
m_StuCourseADO.Refresh();
m_StuCourseDG.ReBind();
m_StuCourseDG.Refresh();
AfxMessageBox("更新成功!");
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description()); CString sError;
sError.Format("Source:%Description:%s",(LPCSTR)bstrSource,(LPCSTR)bstrDescription); AfxMessageBox(sError);
pConnection->Close();
}
CDialog::OnOK();
}
关闭了对话框
另外操作数据库可以看看参考这篇文章
http://blog.csdn.net/xianglitian/article/details/5617173
pRs->AddNew();
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();如果是数据库插入时引起的异常。你这里的AddNew和UpDate函数我们也看不到,建议单步跟踪一下,最后在insert的语句查看SQL语句是否有问题。
你加个catch(...)试试