Ado.Net 开启事务

使用SqlTransaction对象处理 批量导入数据内容的应用场景

SqlTransaction的使用:

        开启事务,执行一组操作,更灵活,不管是不是批量的数据都可以进行驾驭

使用实例:

        创建测试表:

Create table tesTable
(
	uName varchar(30),
	uPwd varchar(30),
	age smallint,
	deptId smallint
)

create table DeptTable
(
	deptId smallint primary key identity(1,1),
	deptName varchar(30)
)

当前数据表中的内容 

         使用程序开启事务:

try...catch用于捕获异常 ,保证数据的提交或回滚的一致性;

        //使用SqlTransaction开启事务
        static void teseSqlTransaction()
        {
            string connStr = ConfigurationManager.ConnectionStrings
                ["connStr"].ConnectionString;
            SqlConnection conn = new SqlConnection(connStr);
            //开启事务前需要连接开启
            conn.Open();
            //开启一个事务
            SqlTransaction tran = conn.BeginTransaction();
            //建立command
            SqlCommand cmd = conn.CreateCommand();
            //设置要执行的事务
            cmd.Transaction = tran;
            try
            {
                //定义要执行的操作
                cmd.CommandText = "insert into depttable(deptName) values(@DeptName);select @@identity;";
                cmd.Parameters.Add(new SqlParameter("@DeptName", "采购部"));
                object oId = cmd.ExecuteScalar();
                //清空参数
                cmd.Parameters.Clear();
                int deptId = 0;
                if (oId != null)
                {
                    deptId = int.Parse(oId.ToString());
                }
                cmd.CommandText = "insert into tesTable(uName,uPwd,age,deptId)" +
                    " values(@UserName, @UserPwd, @UserAge, @deptId)";
                SqlParameter[] parameters =
                {
                    new SqlParameter("@UserName","X_XYZ"),
                    new SqlParameter("@UserPwd","1234"),
                    new SqlParameter("@UserAge",123),
                    new SqlParameter("@deptId",deptId)
                };
                //添加参数数组
                cmd.Parameters.AddRange(parameters);
                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                tran.Commit();
                Console.WriteLine("添加成功");
            }
            catch
            {
                tran.Rollback();
                Console.WriteLine("出现异常");
            }
            finally
            {
                conn.Close();
            }
        }

运行:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默九思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值