asp.net事务咋不回滚呀,我操作多表即有插入也有更新,必须保证完整性

jnkrsoft 2017-08-31 07:27:55
asp.net事务咋不回滚呀,我操作多表即有插入也有更新,必须保证完整性,我ASP.NET中有类似拼接的代码

pisql += " update YSFEE SET I_ISSF=1,I_ShCharge='" + ((TextBox)GridViewYCXFY.Rows[i].FindControl("c")).Text.ToString().Trim() + "' WHERE I_ID='" + GridViewYCXFY.DataKeys[i].Value.ToString().Trim() + "' ";

pisql += @" INSERT INTO ONEOFF (O_ID,O_DJID,O_FID,O_PRICE,O_COUNT,O_SDATE,O_MON,O_ZNMON,O_TOTAL,O_STATE,O_ISRETURN,O_REMARK,O_DEL,W_NAME,F_CHARGEITEMID,F_YSZNJ,O_Charge,AccoutPer)VALUES(replace(newid(),'-',''),'" + str + @"','" +
((Literal)GridViewYCXFY.Rows[i].FindControl("fid")).Text.ToString().Trim() + @"','" +
((TextBox)GridViewYCXFY.Rows[i].FindControl("c1")).Text.ToString().Trim() + @"','" +
((TextBox)GridViewYCXFY.Rows[i].FindControl("c2")).Text.ToString().Trim()+@"','"+
DateTime.Now.ToString("yyyy-MM-dd") + @"','" +
((TextBox)GridViewYCXFY.Rows[i].FindControl("c")).Text.ToString().Trim() + @"','0','" +
((TextBox)GridViewYCXFY.Rows[i].FindControl("c")).Text.ToString().Trim() + @"','0','" + result + "','" +
((Literal)GridViewYCXFY.Rows[i].FindControl("TxtRemark")).Text.ToString().Trim() + "','0','" +
((Literal)GridViewYCXFY.Rows[i].FindControl("chargeName")).Text.ToString().Trim() + "','" +
GridViewYCXFY.DataKeys[i].Value.ToString().Trim() + "',0,'" + ((TextBox)GridViewYCXFY.Rows[i].FindControl("c")).Text.ToString().Trim() + "','" + tbKJTime.Text.ToString().Trim() + "')";
qfdj += GridViewYCXFY.DataKeys[i].Value.ToString().Trim() + ",";


da.Begin();//事务的开始
da.ExecuteNonQuery(pisql);//执行拼接SQL方法
da.Commit();//事务的提交
catch
{
da.Rollback();//事务的回滚

-------很奇怪当操作过程中,浏览器崩溃了,insert都插入了,但是update 都没执行,请高手给予指点,我仔细检查了好几遍代码,不存在语法问题错误,封装类方法也么有问题。

public void Begin()
{
sqlt = conn.BeginTransaction();
com.Transaction = sqlt;
}
public void Rollback()
{
try
{
sqlt.Rollback();

}
finally
{
conn.Close();
sqlt.Dispose();
}
}

public void Commit()
{
//try
//{
sqlt.Commit();

//}
//finally
//{

// conn.Close();
// sqlt.Dispose();
//}
}
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
闭包客 2017-09-01
  • 打赏
  • 举报
回复
update 有影响行数需要 where 从句找得到符合条件的行。
xdashewan 2017-09-01
  • 打赏
  • 举报
回复
同时执行两句sql要用分号隔开的吧,但我没看到你的sql里用了分号吧
  • 打赏
  • 举报
回复
sqlt = conn.BeginTransaction(); com.Transaction = sqlt; 一个是conn, 一个是com 是我看错了,还是你敲错了。
jnkrsoft 2017-09-01
  • 打赏
  • 举报
回复
比较复杂,我的不是太好写成一个存储过程,有没有基于拼接SQL的实现方式
insus 2017-09-01
  • 打赏
  • 举报
回复
写成存储过程和并在数据库实现事务。 程序只执行存储过程即可。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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