数据回滚的问题! 用SQL的事务,或者ADO.NET的事务都可以. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public int Update_ImportData(string sTableName,DataSet DS,ref string sRsMsg) {// string abc ="111";// string bbb = "222";// string ccc = "";// ccc = string.Format("{0}+{1}",abc,bbb);// sRsMsg = abc+bbb; if(sTableName.Length == 0 || DS.Tables["import_data"] == null) { log.WriteLog(1,fac.sRtnMsg,"报表补录数据更新时参数传递错误",sf.GetFileName(),sf.GetFileLineNumber()); return -1; } int iResult = 0; int iTempRs = 0; string sID = ""; string sFlagId =""; string sSql = ""; string sTemp = ""; string sFieldName = ""; string sFieldValue = ""; //fac.OpenConnection(ref Conn,sConn); //取得表的ID字段名 sFlagId=sTableName+"_id"; if( fac.BeginTransaction(Conn,ref Trans) < 0) { log.WriteLog(1,fac.sRtnMsg,"报表补录数据更新事务开始失败",sf.GetFileName(),sf.GetFileLineNumber()); sRsMsg = "报表补录数据更新事务开始失败!" + fac.sRtnMsg; iTempRs= -2; } else { for (int j=0;j<DS.Tables["import_data"].Rows.Count;j++ ) { sTemp = ""; sSql = ""; sSql = string.Format("update {0} set ",sTableName); for( int i=0;i<DS.Tables["import_field_cfg"].Rows.Count;i++ ) { sFieldName = DS.Tables["import_field_cfg"].Rows[i]["field_name"].ToString(); sFieldValue = DS.Tables["import_data"].Rows[j][sFieldName].ToString(); if( i < DS.Tables["import_field_cfg"].Rows.Count - 1 ) { sTemp = sTemp + string.Format("{0}={1},",sFieldName,sFieldValue); } else { sTemp = sTemp + string.Format("{0}={1}",sFieldName,sFieldValue); if (sFlagId.IndexOf("bl")!=-1) { sID = DS.Tables["import_data"].Rows[j]["id"].ToString(); sSql = sSql + sTemp + " where id=" + sID; } else { sID = DS.Tables["import_data"].Rows[j][sFlagId].ToString(); sSql =string.Format("{0}{1} where {2}={3}",sSql,sTemp,sFlagId,sID); } } } iResult = fac.CmdExeNoQuery(Trans,sSql); if ( iResult< 0 ) { //??是否需要将未完成更新的数据保存,而不再进行重新提交 //??若不需要重新提交,则保存未完成的更新数据,继续当前更新操作 sRsMsg = "更新报表补录数据失败!" + fac.sRtnMsg; log.WriteLog(1,sRsMsg,"更新报表补录数据失败",sf.GetFileName(),sf.GetFileLineNumber()); iTempRs = -3; //??若需要重新提交,则中止当前更新操作,重新提交 //break; } } iResult = fac.Commit(Trans); if ( iResult < 0 ) { fac.Rollback(Trans); sRsMsg = "更新报表补录数据失败!" + fac.sRtnMsg; log.WriteLog(1,sRsMsg,"更新报表补录数据失败",sf.GetFileName(),sf.GetFileLineNumber()); iTempRs = -4; } else { sRsMsg = "数据更新操作完成!"; } } fac.CloseConnection(Conn); return iTempRs; } } 菜鸟求助:WPF里面Ribbon在哪里? 【求助】排除数组重复[帮顶给分] 关于C#提示对话框 实现了接口,跟拥有的功能 请问怎样给一个字符串加上下划线? C#如何直接读取Excel指定单元格的值?很是着急,请帮忙。 这么利用applicationsettingsbase 实现不同用户的相关信息的save 和reload C++转C#,求解 1000分都给你!谁能列出最好的几本算法与数据结构书,并提供下载地址? 今天用datagrid又遇两件怪事,进来看看 湖南长沙 诚招.Net开发人员。 请问文本框能不能设置提示
{
// string abc ="111";
// string bbb = "222";
// string ccc = "";
// ccc = string.Format("{0}+{1}",abc,bbb);
// sRsMsg = abc+bbb;
if(sTableName.Length == 0 || DS.Tables["import_data"] == null)
{
log.WriteLog(1,fac.sRtnMsg,"报表补录数据更新时参数传递错误",sf.GetFileName(),sf.GetFileLineNumber());
return -1;
} int iResult = 0;
int iTempRs = 0;
string sID = "";
string sFlagId ="";
string sSql = "";
string sTemp = "";
string sFieldName = "";
string sFieldValue = ""; //fac.OpenConnection(ref Conn,sConn); //取得表的ID字段名
sFlagId=sTableName+"_id";
if( fac.BeginTransaction(Conn,ref Trans) < 0)
{
log.WriteLog(1,fac.sRtnMsg,"报表补录数据更新事务开始失败",sf.GetFileName(),sf.GetFileLineNumber());
sRsMsg = "报表补录数据更新事务开始失败!" + fac.sRtnMsg;
iTempRs= -2;
}
else
{
for (int j=0;j<DS.Tables["import_data"].Rows.Count;j++ )
{
sTemp = ""; sSql = "";
sSql = string.Format("update {0} set ",sTableName); for( int i=0;i<DS.Tables["import_field_cfg"].Rows.Count;i++ )
{
sFieldName = DS.Tables["import_field_cfg"].Rows[i]["field_name"].ToString();
sFieldValue = DS.Tables["import_data"].Rows[j][sFieldName].ToString(); if( i < DS.Tables["import_field_cfg"].Rows.Count - 1 )
{
sTemp = sTemp + string.Format("{0}={1},",sFieldName,sFieldValue);
}
else
{ sTemp = sTemp + string.Format("{0}={1}",sFieldName,sFieldValue);
if (sFlagId.IndexOf("bl")!=-1)
{
sID = DS.Tables["import_data"].Rows[j]["id"].ToString();
sSql = sSql + sTemp + " where id=" + sID;
}
else
{
sID = DS.Tables["import_data"].Rows[j][sFlagId].ToString();
sSql =string.Format("{0}{1} where {2}={3}",sSql,sTemp,sFlagId,sID);
}
}
}
iResult = fac.CmdExeNoQuery(Trans,sSql); if ( iResult< 0 )
{
//??是否需要将未完成更新的数据保存,而不再进行重新提交
//??若不需要重新提交,则保存未完成的更新数据,继续当前更新操作 sRsMsg = "更新报表补录数据失败!" + fac.sRtnMsg; log.WriteLog(1,sRsMsg,"更新报表补录数据失败",sf.GetFileName(),sf.GetFileLineNumber());
iTempRs = -3;
//??若需要重新提交,则中止当前更新操作,重新提交
//break;
}
} iResult = fac.Commit(Trans); if ( iResult < 0 )
{
fac.Rollback(Trans); sRsMsg = "更新报表补录数据失败!" + fac.sRtnMsg;
log.WriteLog(1,sRsMsg,"更新报表补录数据失败",sf.GetFileName(),sf.GetFileLineNumber()); iTempRs = -4;
}
else
{
sRsMsg = "数据更新操作完成!";
}
} fac.CloseConnection(Conn);
return iTempRs;
}
}