在C#事务模式中,怎样在条件不满足时,并不是出错时,回滚并抛出错误,代码如下 5

publicvoidModifyEmail(intUserId,stringNewEmail,stringOldEmail){stringEmail="";stringc... public void ModifyEmail(int UserId, string NewEmail,string OldEmail)
{
string Email = "";
string cmdText = "select Email from Users TABLOCKX where UserId="+UserId;
SqlConnection conn = new SqlConnection(Connection.ConnString);
SqlCommand cmd = new SqlCommand(cmdText, conn);
conn.Open();
SqlTransaction tr = conn.BeginTransaction();
cmd.Transaction = tr;
try
{
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Email = dr["Email"].ToString();
}
dr.Close();
if (Email == OldEmail)
{
cmd.CommandText = "Update users Set Email='" + NewEmail + "' Where UserId=" + UserId;
cmd.ExecuteNonQuery();
}
else
{
//要求此处能抛出错误,或中止事务并回滚(此处能中止事务吗?)
}
tr.Commit();
}
catch(Exception ex)
{
tr.Rollback();
throw ex;
}
finally { conn.Close(); }
}
展开
 我来答
光尘9022
2011-08-11 · 超过21用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:24.7万
展开全部
else
{
//要求此处能抛出错误,或中止事务并回滚(此处能中止事务吗?)
//此处在事务提交之前,数据库里面不会执行
}
tr.Commit();
百度网友5f03b801
2011-08-11 · 超过10用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:27.7万
展开全部
试下把tr.Rollback()放到else里去,
else
{
try
{
tr.Rollback();
}
catch(Exception ex)
{
// do something here.
return;
}
tr.Commit();
}
追问
那怎样抛出错误信息,错误信息只是在出错时才抛出,但是else中只是不满足条件,怎样定义错误信息并抛出呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式