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