SQL Server的Exception Handling

[ 来源:http://www.it55.com | 作者: | 时间:2007-12-18 | 收藏 | 推荐 ] 【


   (
   @user_name NVARCHAR(256),
   @role_name NVARCHAR(256)
   )
  AS
  
  DECLARE @user_id VARCHAR(50)
  DECLARE @role_id VARCHAR(50)
  
  DECLARE @error_number INT
  DECLARE @error_serverity INT
  DECLARE @error_state INT
  
  BEGIN TRY
  
  SELECT @user_id = [USER_ID] FROM dbo.T_USERS WHERE LOWERED_USER_NAME = LOWER(@user_name)
  
  IF(@user_id IS NULL)
   BEGIN
   RAISERROR (50003,16,1)
   END
  
  SELECT @role_id = [ROLE_ID] FROM dbo.T_ROLES WHERE LOWERED_ROLE_NAME = LOWER(@role_name)
  
  IF(@role_id IS NULL)
   BEGIN
   RAISERROR (50004,16,1)
   END
  
  IF(EXISTS(SELECT * FROM T_USERS_IN_ROLES WHERE [USER_ID] = @user_id AND ROLE_ID = @role_id))
   BEGIN
   RAISERROR (50005,16,1)
   END
  
  INSERT INTO dbo.T_USERS_IN_ROLES([USER_ID],ROLE_ID) VALUES(@user_id,@role_id)
  
  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
  
  · Delete Data: P_CLEAR_DATA
  
  CREATE Procedure P_CLEAR_DATA
  AS
  
   DELETE FROM dbo.T_USERS_IN_ROLES
   DELETE FROM dbo.T_USERS
   DELETE FROM dbo.T_ROLES
  
  GO
  
  4. Common Function:Utility. ExecuteCommand
  
  
  
  private const string connectionStringName = "TestDb";
  public static bool ExecuteCommand(string procedureName, Dictionary<string, object> parameters)
   {
   ConnectionStringSettings connectionStringSection = ConfigurationManager.ConnectionStrings[connectionStringName];
   DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory(connectionStringSection.ProviderName);
   using (DbConnection connection = dbProviderFactory.CreateConnection())
   {
   connection.ConnectionString = connectionStringSection.ConnectionString;
   connection.Open();
   DbCommand command = connection.CreateCommand();
   command.CommandText = procedureName;
   command.CommandType = CommandType.StoredProcedure;
   DbParameter parameter;
   foreach (KeyValuePair<string, object> param in parameters)
   {
   parameter = dbProviderFactory.CreateParameter();
   parameter.ParameterName = param.Key;
   parameter.DbType = DbType.String;
   parameter.Value = param.Value;
   command.Parameters.Add(parameter);
   }
   DbTransaction transation = connection.BeginTransaction();
   command.Transaction = transation;
   try
   {
   command.ExecuteNonQuery();
   transation.Commit();
   return true;
   }
   catch
   {
   transation.Rollback();
   throw;
   }
   }
  }
  
  
  
  
  5. Create User, Create Role, Add User In Role, Delete All Data
  
  
   private const string ErrorUserExists = "This user is already existent";
   private const string ErrorRoleExists = "This role is already existent";
   private const string ErrorUserNotExists = "This user does not exist";
   private const string ErrorRoleNotExists = "This role does not exist";
   private const string ErrorUserInRole = "This user is already in the role";
  
   public static bool CreateUser(string userName)
   {
   string procedureName = "P_USERS_I";
   Dictionary<string, object> parameters = new Dictionary<string, object>();
   parameters.Add("user_id", Guid.NewGuid().ToString());

(编辑:IT资讯之家 www.it55.com

上一篇:实时监控网站运行情况的三种方法   下一篇:没有了

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]