存储过程、事务、触发器。
2013-09-25 21:27
176 查看
一、调用带两个普通参数和一个输出参数的存储过程实现账号密码的验证。
存储过程为如下代码:
ASP.NET代码为如下:
二、事务
向Manage表添加指定的@admin和@pwd变量后自动向User_Classify表添加相同信息
C#中使用此事务的代码与一中相似
三、触发器
1、实现向Manage表插入数据的同时向User_Classify表插入相同的数据
2、 instead of 触发器
--instead of触发器实现的功能为向Manage表插入数据时检测是否存在与要插入的数据相同的用户
--有的话回滚,没有的话执行插入操作,print操作成功
--instead of 触发器在每个表中只能有一个
存储过程为如下代码:
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
相关文章推荐
- 函数,视图,存储过程,触发器,sysobjects (系统对象表),事务,异常
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- 7-22 存储过程、触发器、事务
- 触发器,存储过程,视图,事务的语法
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程;触发器trigger;播放器http://www.smartgz.com/blog/Article/956.asp
- oracle数据库安全,事务机制,触发器和存储过程
- MySQL数据库学习笔记(2):存储过程、触发器、事务
- 基于mysql事务、视图、存储过程、触发器的应用分析
- 存储过程、触发器和事务处理
- mysql 事务 视图 存储过程 触发器
- PHP数据库 mysql(三)事务、存储函数,存储过程,触发器、权限设置
- 事务,触发器,存储过程
- 视图、索引、存储过程 、触发器、游标及事务
- 数据库中的事务、存储过程和触发器的简单使用
- MySQL 触发器、存储过程、事务简单示例
- Oracle数据库之视图、索引、存储过程、触发器、事务、函数
- 3.22 学数据库 视图 存储过程 触发器 事务 函数 索引
- mysql事务、触发器、视图、存储过程、函数
- mysql-视图、触发器、事务、存储过程、流程控制
- MySQL 存储过程/游标/触发器/事务