- •Базы данных и информационные системы. Основные понятия, классификация. Корпоративные информационные системы.
- •Виды и сравнительная характеристика архитектуры информационных систем на основе баз данных.
- •Этапы создания и жизненный цикл информационной системы. Модели и стандарты жизненного цикла – их краткая характеристика.
- •Каскадное проектирование информационной системы (ис). Поэтапная модель с промежуточным контролем. Преимущества и недостатки. Стадии и этапы создания ис в соответствии с гост 34.601-90.
- •Спиральное проектирование информационной системы. Гибкие методологии разработки. Примеры. Преимущества и недостатки.
- •Назначение и классификация case средств. Примеры.
- •Системы контроля версий (скв). Назначение, классификация, примеры. Репозиторий. Сервис GitHub. Организация коллективной работы над проектом с помощью скв.
- •Использование eRwin Data Modeler для логического и физического моделирование баз данных. Нотация idef1x. Прямое и обратное проектирование. Поддерживаемые субд.
- •Общая характеристика системы Git. Структура репозитория. Алгоритмы и принципы работы. Использование Visual Studio с Git.
- •Case средства для моделирования баз данных. Общая характеристика eRwin Data Modeler. Функции и характеристика используемых нотаций.
- •Современные клиент-серверные субд. Общая характеристика субд ms sql Server: версии, редакции, основные службы и компоненты, режимы работы сервера.
- •Субд ms sql Server: системные базы данных и таблицы, структура данных на физическом уровне (файлы баз данных, журналы транзакций, файловые группы и др.).
- •Субд ms sql Server: конфигурирование и администрирование (создание и удаление баз данных, задание свойств, шифрование, создание объектов баз данных, перемещение баз данных и др.).
- •Архитектура и фундаментальные классы ado.Net. Типы поставщиков данных и их обобщенная структура.
- •Объект Connection. Свойства, методы, примеры использования. Обработка ошибок.
- •Объект Cоmmand. Свойства, методы, примеры использования.
- •Выполнение параметризованных команд с использованием объекта Command. Атака внедрением.
- •Хранимые процедуры. Вызов хранимых процедур в ado .Net, передача параметров.
- •Объект DataReader. Свойства, методы, примеры использования.
- •Объект DataAdapter. Свойства, методы, примеры использования для наполнения и обновления DataSet
- •Объект DataSet. Структура, свойства, методы, примеры использования.
- •Цикл работы с данными с использованием графического интерфейса Windows Forms. Характеристика источников данных для элементов управления
- •Общая характеристика основных элементов управления Windows Form, позволяющих осуществлять связывание с источниками данных. Простое и сложное связывание.
- •Класс Binding. Назначение, свойства, методы, примеры использования.
- •Класс BindingSource. Назначение, свойства, методы, примеры использования.
- •Класс BindingSource. Организация фильтрации записей. Вывод связных записей из двух источников данных. Примеры фрагментов кода.
- •Использование средств Visual Studio для разработки приложений баз данных на основе технологии связывания элементов управления с данными. Класс BindingNavigator.
- •Общая характеристика Web-технологий для построения приложений баз данных. Клиент-серверное взаимодействие по протоколу http. Asp.Net. Жизненный цикл страницы asp .Net.
- •Архитектура, история и перспективы технологии asp.Net. Сравнение технологий Web Forms asp.Net и mvc asp.Net. Компоненты приложения Web Forms asp.Net.
- •Asp.Net страницы. Master Pages. Объекты Page, Session, Application, Cache, Request, Response, Server, Session, User.
- •Конфигурирование приложений asp.Net. Типы, структура и состав файлов конфигурации. Способы обращения к разделам
- •Группы элементов управления asp.Net. Серверные элементы управления html. Установка атрибутов и свойств. События элементов управления и их обработка.
- •Web элементы управления asp.Net. События элементов управления и их обработка. Механизм AutoPostBack.
- •Элементы управления проверки достоверности asp.Net.
- •Способы хранения состояния web приложения asp.Net.
- •Связывание элементов управления Web Form с источниками данных. Способы связывания. Примеры.
- •Связывание элементов управления Web Form со списками данных. Примеры.
- •Элементы управления Web Form - источники данных. Элемент SqlDataSource и его использование для работы с реляционными данными. Выполнение параметризованных команд с использованием SqlDataSource.
- •Элементы Web Form - потребители данных. Элементы управления, связанные с данными и их краткая характеристика. Элементы управления для работы с табличными данными.
- •Элемент управления GridView. Использование шаблонов в GridView.
- •Реализация шаблона mvc (Model View Controller) в asp.Net и Visual Studio.
- •Общая характеристика контроллеров (Controllers): создание, методы, методы действий, возвращаемые результаты, способы вызова. Примеры.
- •Создание класса, реализующего интерфейс iController.
- •Создание контроллера за счет наследования от класса Controller
- •Способы получения данных контроллером. Стандартный привязчик DefaultModelBinder. Примеры.
- •Передача данных из метода действия контроллера в представление. Примеры.
- •Общая характеристика представлений (Views): назначение, создание, вызов из контроллера. Строго типизированные представления. Примеры.
- •Движок Razor. Выражения кода и строки кода. Хелперы, шаблонные хелперы. Примеры.
- •Выражениям кода
- •Блоку кода.
- •Мастер-страницы. Частичные представления. Примеры.
- •Общая характеристика моделей. Entity Framework.
- •Маршрутизация url запросов asp.Net mvc приложением.
- •Общая характеристика технологии linq и интерфейсов для работы с различными источниками данных.
- •Операция запроса в linq. Способы записи запроса (синтаксисы записи). Выполнение запроса.
- •Запросы linq для осуществления фильтрации, сортировки и группировки. Примеры для различных способов записи.
- •Запросы linq для обращения к двум и более последовательностям. Соединение. Примеры для различных способов записи.
- •Правила построения выражений запросов в linq. Аналогии с sql. Пример сложного выражения.
- •Техническое задание на разработку информационной системы: основные разделы и их содержание.
- •Руководство программиста информационной системы: назначение документа, его разделы и их содержание.
- •Руководство пользователя информационной системы: назначение документа, его разделы и их содержание.
- •6. Рекомендации по освоению.
Выполнение параметризованных команд с использованием объекта Command. Атака внедрением.
protected void cmdGetRecords_Click(object sender, EventArgs e)
{
String connectionString = WebConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString);
// Получить заказы по идентификатору заказчика
string sql =
"SELECT Orders.CustomerID, Orders.OrderID, COUNT(UnitPrice) AS Items, " +
"SUM(UnitPrice * Quantity) AS Total FROM Orders " +
"INNER JOIN [Order Details] " +
"ON Orders.OrderID = [Order Details].OrderID " +
"WHERE Orders.CustomerID = '" + txtID.Text + "' " +
"GROUP BY Orders.OrderID, Orders.CustomerID";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
reader.Close();
con.Close();
}
Атаки внедрением:
Вот что пользователь может ввести в текстовом поле, чтобы осуществить более изощренную атаку внедрением SQL, удалив все строки в таблице Customers:
ALFKI‘); DELETE * FROM Customers -- -
; – граница начала нового оператора
-- - комментирует оставшуюся часть оператора.
Что бы избежать этой опасности, нужно использовать параметры.
Параметризованная команда – это просто команда, которая использует символы-заполнители в тексте SQL. Заполнитель указывает место для динамически применяемых значений, которые затем пересылаются через коллекцию Parameters объекту Command.
Например, следующий оператор SQL: SELECT * FROM Customers WHERE CustomerID = 'ALFKI‘ должен стать чем-то вроде: SELECT * FROM Customers WHERE CustomerID = @CustID
@CustID значение будет считаться единым целым, независимо от того, что ввел пользователь.
У класса Command есть коллекция Parameters, через которую реализуется передача параметризированных команд на сервер:
SqlCommand com = new SqlCommand("Select CityName from City where CountryID = (select CountryID from Country where CountryName = @Name)", con);
com.Parameters.AddWithValue("@Name", CountryName);
Такой оператор гарантированно избежит SQL инъекции.
Хранимые процедуры. Вызов хранимых процедур в ado .Net, передача параметров.
Выполнение в базе данных хранимых процедур вместо отдельных операторов SQL дает пользователю следующие преимущества:
необходимые операторы уже содержатся в базе данных;
все они прошли этап синтаксического анализа и находятся в исполняемом формате; перед выполнением хранимой процедуры SQL Server генерирует для нее план исполнения, выполняет ее оптимизацию и компиляцию;
хранимые процедуры поддерживают модульное программирование, так как позволяют разбивать большие задачи на самостоятельные, более мелкие и удобные в управлении части;
хранимые процедуры могут вызывать другие хранимые процедуры и функции;
хранимые процедуры могут быть вызваны из прикладных программ других типов;
как правило, хранимые процедуры выполняются быстрее, чем последовательность отдельных операторов;
хранимые процедуры проще использовать: они могут состоять из десятков и сотен команд, но для их запуска достаточно указать всего лишь имя нужной хранимой процедуры. Это позволяет уменьшить размер запроса, посылаемого от клиента на сервер, а значит, и нагрузку на сеть.
Пример:
Процедура:
CREATE PROCEDURE dbo.AddCustomer
@CityName nvarchar(255),
@CustomerName nvarchar(255)
AS
BEGIN
insert into Customer (CustomerName,CityID) values (@CustomerName,(select CityID from City where CityName = @CityName));
END
Вызов процедуры в клиентской программе:
SqlCommand com = new SqlCommand("AddCustomer", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@CityName", “Гомель”);
com.Parameters.AddWithValue("@CustomerName", “Ковбеня Э.М.”);
try
{
con.Open();
com.ExecuteNonQuery();
}
catch (Exception e)
{}
finally
{
con.Close();
}
Некоторые процедуры могут иметь выходной (OUTPUT) параметр:
CREATE PROCEDURE InsertEmployee
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FirstName varchar(10),
@EmployeeID int OUTPUT
AS
INSERT INTO Employees
(TitleOfCourtesy, LastName, FirstName, HireDate)
VALUES (@TitleOfCourtesy, @LastName, @FirstName, GETDATE());
SET @EmployeeID = @@IDENTITY
Прочитать выходной параметр достаточно просто:
cmd.Parameters.Add(new SqlParameter("@EmployeeID", SqlDbType.Int, 4));
cmd.Parameters["@EmployeeID"].Direction = ParameterDirection.Output;
try
{
con.Open();
cmd.ExecuteNonQuery();
int empID = (int)cmd.Parameters["@EmployeeID"].Value;
}
finally
{
con.Close();
}
