事务执行不正确

heli_1005 heli_1005 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是aspx.cs中的代码。是主从关系的表的添加功能,一个主表,多个从表。所以我把事务用在aspx.cs里面。但是,有时候主表添加成功,从表添加失败,事务不起作用,错哪里了呢?
  
public string Constr = System.Configuration.ConfigurationManager.AppSettings["sqlConn.ConnectionString"].ToString();

public void tranClas()
{

using (SqlConnection con = new SqlConnection(Constr))
{
con.Open();
SqlTransaction ts = con.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.Transaction = ts;
try
{
Ent_Class_Profile claPro = new Ent_Class_Profile();
Ent_Class_Detail detail = new Ent_Class_Detail();
string str = Request.QueryString["data"].ToString();
JieXiJson[] jsda = new JavaScriptSerializer().Deserialize<JieXiJson[]>(str);

claPro.Category_ID = jsda[0].dlCourse;
claPro.Category_2nd_ID = jsda[0].dlSort;
claPro.Attendee_min = jsda[0].Attendee_min;
claPro.Attendee_Max = jsda[0].Attendee_Max;
claPro.Forct_Date =Convert.ToDateTime(jsda[0].Forct_Date);
claPro.Class_Qty = jsda[0].Class_Qty;
claPro.Class_Points = jsda[0].Class_Points;
claPro.Status = jsda[0].rds;
claPro.Publish_Date =Convert.ToDateTime(jsda[0].Publish_Date);

//添加主表class
bool bclas = tb.TranPlanClass(claPro);
// 得到此时最大classid
int clasId = tb.MaxClassId();
for (int i = 1; i <(claPro.Class_Qty+1); i++)
{
detail.Class_ID = clasId;
detail.Class_Sequence = jsda[i].Class_Sequence;
detail.Class_Time_Begin =Convert.ToDateTime(jsda[i].Class_Time_Begin.ToString());
detail.Class_Time_End = Convert.ToDateTime(jsda[i].Class_Time_End.ToString());
detail.Course_Code = jsda[i].Course_Code;
detail.Teacher_ID = jsda[i].Teacher_ID;
//添加从表classDetail
bool bdetai = tb.TranPlanClassDetail(detail);

}
ts.Commit();
}
catch(Exception)
{
if (ts != null)
{
ts.Rollback();
}
throw;
}
finally
{
if (ts != null)
{
con.Close();
}
}
...全文

相关推荐

PHP中执行MYSQL事务解决数据写入不完整等情况

近来稍有时间研究了下MYSQL中的事务操作,在很多场合下很是适用,譬如在注册的时候需要初始化很多张关联表的时候,问答回复的时候需要至少同时操作两张表,这些都会在某些时候只能成功更新一张表,而另外的SQL语句出现错误,正常的操作会导致初始化了一张表 ,其他的都木有能初始化,这个时候就会导致用户表里的用户信息已经执行插入,导致提示注册失败,但是用户已经注册了部分信息,这个时候需要程序员去数据库删除相应的数据是一个比较不好的事情。 因此这边考虑使用事务,事务可以进行模拟SQL操作,当所有的SQL都操作成功的时候才进行SQL操作,只要有一个操作失败就回滚当前事务的所有SQL操作,避免出现上面描述中出现

weixin_38622467

redis事务与关系型数据库事务比较

文档列举了redis环境的事务与关系型数据库的事务的区别

rockets_lwg

redis事务常用操作详解

事务 MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 EXEC 命令负责触发并执行事务中的所有命令: 如果客户端在使用 MULTI 开启了一个事务之后,却因为断线而没有成功执行 EXEC ,那么事务中的所有命令都不会被执行。 另一方面,如果客户端成功在开启事务之后执行 EXEC ,那么事务中的所

weixin_38577648

Spring事务管理失效原因汇总

Spring声明式事务管理失效的原因,这里面是日常工作中踩过的坑,事务失效所产生的影响比较隐蔽,测试时易忽略,大多是在线上暴露,这可能是对Spring管理下的信任吧

阁楼夜半听风雨

spring事务的传播特性和事务隔离级别

spring事务的传播特性和事务隔离级别

银狐公子
评论 9
收藏 已收藏
分享
返回顶部
heli_1005
.NET社区 62,272 成员 668,968 内容