WEB开发网
开发学院数据库MSSQL Server 基于SQL Server 的Exception Handling - PART II 阅读

基于SQL Server 的Exception Handling - PART II

 2008-12-06 10:15:28 来源:WEB开发网   
核心提示: [注:直接操作sys.messages是不被允许的]五、ADO.NET Exception Handling上面所有的都在介绍在Database层面如何进行Exception handling,下面我们同一个简单的Demo,基于SQL Server 的Exception Handling

[注:直接操作sys.messages是不被允许的]

五、  ADO.NET Exception Handling

上面所有的都在介绍在Database层面如何进行Exception handling,下面我们同一个简单的Demo,简单介绍一个我么的.NET Application如何处理从Database Engine抛出的Exception。在这里我们使用一个简单的Cosole application模拟一个简单的Security方面的场景:创建用户、创建角色、添加用户到角色。大部分的功能都在上面提到了,在这里做一下总结:

1.  表结构:

基于SQL Server 的Exception Handling - PART II

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

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:基于 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接