finally
  {
    сon.С1оsе();
  }
}

Как видим, метод принимает данные, используя объект EmployeeData. Любая ошибка перехватывается, но существенные внутренние подробности не возвращаются коду Web-страницы. Это предотвращает выдачу информадии на Web-cтранице, которая может послужить источником для возможного вмешательства. Также это должно быть идеальное место для вызова другого метода в протоколирующем компоненте, чтобы записывать полную информацию об ошибке в протокол или другую базу данных.

Методы GetEmployee() и GetEmployees() возвращают данные, используя объект EmployeeData:

public EmployeeData GetEmployee(int employeeID)
{
  SqlConnection con = new SqlConnection(connectionString);
  SqlCommand cmd = new SqlCommand("GetEmployee", con);
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Parameters.Add(new SqlParameter("@EmployeeID", SqlDbType.Int, 4));
  cmd.Parameters["@EmployeeID"].Value = employeeID;
  try
  {
    con.Open();
    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow);
    // Получить первую строку.
    reader.Read();
    EmployeeData emp = new EmployeeData(
     (int)reader["EmployeeID"], (string)reader["FirstName"],
     (string)reader["LastName"], (string)reader["TitleOfCourtesy"]);
    reader.Close();
    return emp;
  }
  catch (SqlException err)
  {
    throw new ApplicationException("Data error.");
  }
  finally
  {
    con.Close();
  }
}

public List<EmployeeData> GetEmployees()
{
  SqlConnection con = new SqlConnection(connectionString);
  SqlCommand cmd = new SqlCommand("GetAllEmployees", con);
  cmd.CommandType = CommandType.StoredProcedure;
  // Создать коллекцию для всех записей employees.
  List<EmployeeData> employees = new List<EmployeeData>();

предыдущая    следующая страница   оглавление

343

Hosted by uCoz