事务执行不正确
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操作,避免出现上面描述中出现
redis事务与关系型数据库事务比较
文档列举了redis环境的事务与关系型数据库的事务的区别
redis事务常用操作详解
事务 MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 EXEC 命令负责触发并执行事务中的所有命令: 如果客户端在使用 MULTI 开启了一个事务之后,却因为断线而没有成功执行 EXEC ,那么事务中的所有命令都不会被执行。 另一方面,如果客户端成功在开启事务之后执行 EXEC ,那么事务中的所
Spring事务管理失效原因汇总
Spring声明式事务管理失效的原因,这里面是日常工作中踩过的坑,事务失效所产生的影响比较隐蔽,测试时易忽略,大多是在线上暴露,这可能是对Spring管理下的信任吧
spring事务的传播特性和事务隔离级别
spring事务的传播特性和事务隔离级别


