您的位置:首页 > 其它

存储过程、事务、触发器。

2013-09-25 21:27 176 查看
一、调用带两个普通参数和一个输出参数的存储过程实现账号密码的验证。

存储过程为如下代码:

create proc St_exam
@adm varchar(50),
@pwd varchar(50),
@result int=1 output
as
select @result=COUNT(*) from Manage where Admin=@adm and Pwd=@pwd
return @result


ASP.NET代码为如下:

protected void Page_Load(object sender, EventArgs e)
{
St_Proc("1115115","1992");
}

public void St_Proc(string Adm, string Pwd)
{
SqlConnection conn = new SqlConnection("Data Source=CCPC;Initial Catalog=Stored_Procedure;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("St_exam", conn);  //  "St_exam" 为存储过程名
cmd.CommandType = CommandType.StoredProcedure;     //设置命令类型为存储过程
SqlParameter[] pa = { new SqlParameter("adm",SqlDbType.VarChar),    // 声明一个多维的参数数组
new SqlParameter("Pwd",SqlDbType.VarChar),     //参数名为存储过程的参数名
new SqlParameter("result",SqlDbType.Int)};
pa[0].Value = Adm;     // 给参数赋值
pa[1].Value = Pwd;
pa[2].Direction = ParameterDirection.Output;    //设置输出参数的输出方向 相当于获取输出参数的值
cmd.Parameters.AddRange(pa);
cmd.ExecuteNonQuery();
int result = int.Parse(cmd.Parameters[2].Value.ToString());
if (result==1)
{
Response.Write("登陆成功");
}
else
{
Response.Write("登陆失败");
}
}


二、事务

向Manage表添加指定的@admin和@pwd变量后自动向User_Classify表添加相同信息

create proc shiwu_insert
@admin nvarchar(50),
@pwd nvarchar(50)
as
begin
insert into Manage values(@admin,@pwd)
insert into User_Classify values(@admin,@pwd)
end


C#中使用此事务的代码与一中相似
三、触发器

1、实现向Manage表插入数据的同时向User_Classify表插入相同的数据

Create trigger insert_classify
on Manage
for insert
as
begin
declare @admin nvarchar(50),
@pwd nvarchar(50)
select @admin=Admin,@pwd=Pwd from inserted
insert into User_Classify values(@admin,@pwd)
end


2、 instead of 触发器
--instead of触发器实现的功能为向Manage表插入数据时检测是否存在与要插入的数据相同的用户
--有的话回滚,没有的话执行插入操作,print操作成功
--instead of 触发器在每个表中只能有一个

create trigger insert_verify on Manage instead of insert
as
--declare @result int=0
if exists(select * from Manage where Admin=(select Admin from inserted))
begin
rollback transaction
print'已存在的用户'
--print @result
end
else
begin
insert into Manage select * from inserted
--select @result=1
--print @result
print'插入成功'
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: