关于transaction(C#\SQL-Server)

这两天写程序用到了transaction。本来想在SQL-Server中的存储过程中写,发现直接在C#程序中写也很方便,于是在C#中完成了。现在把两种transaction的方式写出来。
在C#中:红色字体是使用transaction的关键部分

        Common comm = new Common();
        Session["lunwbh"] = Convert.ToInt32(GridView1.DataKeys[GridView1.SelectedIndex]["论文编号"]);

        SqlConnection conn = new SqlConnection(comm.getsqlconnection());
        conn.Open();
        SqlCommand command = new SqlCommand("Pro_BianJ_LunW",conn);
        command.CommandType = CommandType.StoredProcedure;
        SqlParameter parm1 = command.Parameters.Add("@LunWBH", SqlDbType.Int, 4);
        parm1.Direction = ParameterDirection.Input;
        parm1.Value = Convert.ToInt32(Session["lunwbh"]);
        SqlParameter parm2 = command.Parameters.Add("@BianJM", SqlDbType.VarChar, 20);
        parm2.Direction = ParameterDirection.Input;
        parm2.Value = Convert.ToString(Session["ZhuCYHM"]);
        SqlTransaction trans;
        trans = conn.BeginTransaction();
        command.Transaction = trans;
        try
        {
            command.ExecuteNonQuery();
            trans.Commit();
            Response.Write("<script>alert('已经把这篇论文放到您的论文库中!')</script>");
        }
        catch
        {
            trans.Rollback();
            Response.Write("<script>alert('保存失败!')</script>");
        }
        finally
        {
            conn.Close();
        }


在存储过程中的transaction:(摘自MSDN)
DECLARE @TranName VARCHAR(20);
SELECT @TranName = 'MyTransaction';

BEGIN TRANSACTION @TranName;
USE AdventureWorks;
DELETE FROM AdventureWorks.HumanResources.JobCandidate
    WHERE JobCandidateID = 13;

COMMIT TRANSACTION @TranName;
GO

转载于:https://www.cnblogs.com/liulanglang/archive/2007/07/27/833194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值