Ado.Net调用数据库事务

 事务基本概念

事务介绍与使用http://t.csdn.cn/hGkVV

程序如何调用事务

        使用存储过程来进行包裹 

存储过程介绍与使用http://t.csdn.cn/eoedY

目录

数据库中的存储过程包裹事务案例

用户表、部门表创建

存储过程:

程序调用存储过程


数据库中的存储过程包裹事务案例

用户表、部门表创建

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)
)

存储过程:

create procedure AddUserBytran
@UserName varchar(30),
@UserPwd varchar(30),
@UserAge smallint,
@DeptName varchar(30)
as 
begin
	begin transaction 
	begin try 
	--插入部门信息
		Insert into DeptTable(deptName) values(@DeptName)
		declare @deptId smallint
		select @deptId = @@IDENTITY
	--插入用户信息
		insert into tesTable(uName,uPwd,age,deptId) 
			values(@UserName,@UserPwd,@UserAge,@deptId)
		commit transaction	--提交
		return 1;
	end try
	begin catch
		rollback transaction	--回滚
		return 0;
	end catch
end

程序调用存储过程

        //调用存储过程
        static void testProcedure()
        {
            string connStr = ConfigurationManager.ConnectionStrings
                ["connStr"].ConnectionString;
            SqlConnection conn = new SqlConnection(connStr);

            //调用存储过程
            SqlCommand cmd = new SqlCommand("AddUserByTran", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            //参数调用前清空
            cmd.Parameters.Clear();
            SqlParameter[] paras =
            {
                new SqlParameter("@UserName","Peter"),
                new SqlParameter("@UserPwd","1234"),
                new SqlParameter("@UserAge",23),
                new SqlParameter("@DeptName","研发部"),
                new SqlParameter("returnValue",SqlDbType.Int,4)
            };
            paras[4].Direction = ParameterDirection.ReturnValue;//返回值参数
            cmd.Parameters.AddRange(paras);
            //执行
            conn.Open();
            cmd.ExecuteNonQuery();
            int state = int.Parse(paras[4].Value.ToString());
            if(state == 1)
            {
                Console.WriteLine("执行成功");
            }
            else
            {
                Console.WriteLine("执行失败");
            }
        }

 运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张钧泽林

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

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

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

打赏作者

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

抵扣说明:

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

余额充值