事务问题,如何在事务中更新数据后读取数据

cblearn cblearn 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚学C#,想在一个事务中按条件更新一些表记录,更新完后读出数据做些其他动作,不知道怎么处理,下面代码老是报错
public bool delMail(byte vtype, string vidlist)
{
string sql = "";
bool rt = false;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();

SqlTransaction tran = conn.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = tran;
cmd.CommandTimeout = 2000;
try
{
sql = "update t_mail set fsenddel=1 where fitemid in (" + vidlist + ")";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();

sql = "select * from t_mail where fsenddel=1 and factdel=1 and fhasannex=1 and fitemid in (" + vidlist + ")";
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
{
string ss =row["fannex"].ToString();
//删除该路径文件
}

tran.Commit();
rt = true;
}
catch(Exception ex)
{
tran.Rollback();
SystemError.SystemLog(ex.Message);
throw new SystemException("1003", ex.Message, ex);
}
finally
{
conn.Close();
}
return rt;
}
...全文

相关推荐

58 多个事务更新同一行数据时,是如何加锁避免脏写的?l.pdf

58 多个事务更新同一行数据时,是如何加锁避免脏写的?l.pdf

如此醉123

oracle事务.ppt

oracle事务.ppt

yyyyyyhhh222

MySQL并发更新数据时的处理方法

在后端开发中我们不可避免的会遇见MySQL数据并发更新的情况,作为一名后端研发,如何解决这类问题也是必须要知道的,同时这也是面试中经常考察的知识点。

weixin_38622227

Mysql事务并发问题解决方案

在开发中遇到过这样一个问题 一个看视频记录,更新到100就表示看完了,后面再有请求不继续更新了. 结果是: 导致,里面很多数据出现问题. 推测是以下的情况才会导致 第一条请求 事务在执行中,还未提交(因为本地有时候比较难再现,于是手动在程序中,第一条记录处理的时候,sleep了几秒,就达到这种效果了) 第二条请求 事务已经开始执行,这个时候查到的历史最大值不是100,才会去进行了更新 网上看了一下解决方案: 悲观锁 直接锁行记录 这个我在本地测试,确实有效,一个事务开始没结束,第二个事务一个等待,不过会导致处于阻塞状态,因为系统并发,不敢考虑,也就是记录下这个方式. 手动模拟: 执行第一个事

weixin_38688145

48 多个事务并发更新以及查询数据,为什么会有脏写和脏读的问题?l.pdf

48 多个事务并发更新以及查询数据,为什么会有脏写和脏读的问题?l.pdf

如此醉123
评论 9
收藏 已收藏
分享
返回顶部
cblearn
C# 111,129 成员 642,538 内容