基于SQL Server 的Exception Handling - PART II
2008-12-06 10:15:28 来源:WEB开发网[注:直接操作sys.messages是不被允许的]
五、 ADO.NET Exception Handling
上面所有的都在介绍在Database层面如何进行Exception handling,下面我们同一个简单的Demo,简单介绍一个我么的.NET Application如何处理从Database Engine抛出的Exception。在这里我们使用一个简单的Cosole application模拟一个简单的Security方面的场景:创建用户、创建角色、添加用户到角色。大部分的功能都在上面提到了,在这里做一下总结:
1. 表结构:
2. Messages(通过上面一节末Script在sys.messages中创建):
· 50001:This user is already existent
· 50002:This role is already existent
· 50003:This user does not exist
· 50004:This role does not exist
· 50005:This user is already in the role
3. Stored procedure
· Create User:P_USERS_I
CREATE Procedure P_USERS_I
(
@user_id varchar(50),
@user_name nvarchar(256)
)
AS
DECLARE @error_number INT
DECLARE @error_serverity INT
DECLARE @error_state INT
BEGIN TRY
IF(EXISTS(SELECT * FROM dbo.T_USERS WHERE LOWERED_USER_NAME = LOWER(@user_name) OR [USER_ID] = @user_id))
BEGIN
RAISERROR (50001,16,1)
END
INSERT INTO dbo.T_USERS
([USER_ID]
,[USER_NAME]
,LOWERED_USER_NAME)
VALUES(@user_id, @user_name, LOWER(@user_name))
END TRY
BEGIN CATCH
SET @error_number = ERROR_NUMBER()
SET @error_serverity =ERROR_SEVERITY()
SET @error_state = ERROR_STATE()
RAISERROR(@error_number,@error_serverity,@error_state)
END CATCH
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››基于IP地址的vsftp服务器
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接