try
{
UpdateData(true);
m_adoConnection.BeginTrans();
strSQL="insert into xs_xsddmx(ddbh,spbm,sl,dj,jqbj,bz) values('"+m_detaillist.GetItemText(i,0)+
"','"+m_detaillist.GetItemText(i,1)+"',"+m_detaillist.GetItemText(i,6)+","+m_detaillist.GetItemText(i,5)+
",'"+m_detaillist.GetItemText(i,8)+"','"+m_detaillist.GetItemText(i,9)+"')";
m_adoConnection.Execute(strSQL);
strSQL="insert into xs_xsddzb(ddbh,dhrq,ddyj,khbh,xsybh,ddje,czybh,shbj,zfbj,pjlx,bz) values('"+m_DDBH+
"','"+m_DHRQ.Format("%Y-%m-%d")+"','"+m_DDYJSTR+"','"+m_KHBM+"','"+m_XSYBM+"',"+strHTJE+
",'"+m_CZYBM+"','"+m_SHBJ+"','"+m_ZFBJ+"','"+m_PJLXSTR+"','"+m_BZ+"')";
m_adoConnection.Execute(strSQL);
m_adoConnection.CommitTrans();
MessageBox("数据保存成功");
}
catch (_com_error e)
{
TRACE(_T("Warning: 数据提交失败,请联系系统管理员"), e.ErrorMessage(), __FILE__, __LINE__);
m_adoConnection.RollbackTrans();
}
以上的程序采用ADO连接数据库,执行后,每次都提示保存成功,其实上面的xs_xsddmx表是不存在的,而xs_xsddzb表每次都插入一条记录,好象事务不起作用。同时请教一下,为什么SQL语句出现错误不出现任何提示呢,请高手帮我分析一下上面的代码
{
UpdateData(true);
m_adoConnection.BeginTrans();
strSQL="insert into xs_xsddmx(ddbh,spbm,sl,dj,jqbj,bz) values('"+m_detaillist.GetItemText(i,0)+
"','"+m_detaillist.GetItemText(i,1)+"',"+m_detaillist.GetItemText(i,6)+","+m_detaillist.GetItemText(i,5)+
",'"+m_detaillist.GetItemText(i,8)+"','"+m_detaillist.GetItemText(i,9)+"')";
m_adoConnection.Execute(strSQL);
strSQL="insert into xs_xsddzb(ddbh,dhrq,ddyj,khbh,xsybh,ddje,czybh,shbj,zfbj,pjlx,bz) values('"+m_DDBH+
"','"+m_DHRQ.Format("%Y-%m-%d")+"','"+m_DDYJSTR+"','"+m_KHBM+"','"+m_XSYBM+"',"+strHTJE+
",'"+m_CZYBM+"','"+m_SHBJ+"','"+m_ZFBJ+"','"+m_PJLXSTR+"','"+m_BZ+"')";
m_adoConnection.Execute(strSQL);
m_adoConnection.CommitTrans();
MessageBox("数据保存成功");
}
catch (_com_error e)
{
TRACE(_T("Warning: 数据提交失败,请联系系统管理员"), e.ErrorMessage(), __FILE__, __LINE__);
m_adoConnection.RollbackTrans();
}
以上的程序采用ADO连接数据库,执行后,每次都提示保存成功,其实上面的xs_xsddmx表是不存在的,而xs_xsddzb表每次都插入一条记录,好象事务不起作用。同时请教一下,为什么SQL语句出现错误不出现任何提示呢,请高手帮我分析一下上面的代码
解决方案 »
- 和AWE(地址窗口扩展)相关的api调用都有哪些?
- ~~~~求怎么实现一个自定义的安装和卸载界面~~~
- 求助:视频显示
- 已知两天时间间隔,如何利用CTimeSpan得到当前时间?
- 请问:matlab中如何画坐标系?以及实物对应坐标的倍数问题?
- 请问:CString strResult="abcdef"; strResult.GetBuffer(0)和strResult.GetBuffer(1)有什么区别吗?
- 关于MFC调用win32静态连接库的问题
- 怎么让ClistBox里面的内容不重复
- (高分求助)如何将其他应用程序嵌入到我的对话框中
- 请问如何使用EnumProcesses等Psapi.dll中的函数?
- 高分请教同步套接字断开重连的问题
- 一个Dll和EXE程序传值的问题!传不成功
Given a syntactically correct SQL statement and proper permissions, the Execute member function will not fail even if not a single row can be modified or deleted. Therefore, always use the dbFailOnError option when using the Execute member function to run an update or delete query. This option causes MFC to throw an exception of type CDaoException and rolls back all successful changes if any of the records affected are locked and cannot be updated or deleted. Note that you can always call GetRecordsAffected to see how many records were affected.
在Execute之后通过判断records_affected是否等于1知道insert执行结果
////////////////////////////////////
catch (...)
{
TRACE(_T("Warning: 数据提交失败,请联系系统管理员"), e.ErrorMessage(), __FILE__, __LINE__);
m_adoConnection.RollbackTrans();
}