一、调用带两个普通参数和一个输出参数的存储过程实现账号密码的验证。
存储过程为如下代码:
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
浙公网安备 33010602011771号