Разделы презентаций


Доступ к данным при помощи ADO.NET

Содержание

ЦельУзнать о базовом доступе к данным при помощи классов ADO.NET.Познакомиться с моделью данных, сохраняемых в базе. Разработать простое приложение CRUD.

Слайды и текст этой презентации

Слайд 1Доступ к данным при помощи ADO.NET
ASP.NET MVC 4.0
2013

Доступ к данным при помощи ADO.NETASP.NET MVC 4.02013

Слайд 2Цель
Узнать о базовом доступе к данным при помощи классов ADO.NET.
Познакомиться

с моделью данных, сохраняемых в базе.
Разработать простое приложение CRUD.

ЦельУзнать о базовом доступе к данным при помощи классов ADO.NET.Познакомиться с моделью данных, сохраняемых в базе. Разработать

Слайд 3Классы ADO.NET
Классы конкретных поставщиков данных (находятся в пространствах имен System.Data.OleDb,


System.Data.SqlClient, и т.п.)

Классы для автономной работы с данными

(находятся в пространствах имен System.Data и System.Data.Common)
 

Классы ADO.NETКлассы конкретных поставщиков данных (находятся в пространствах имен System.Data.OleDb,   System.Data.SqlClient, и т.п.)Классы для автономной

Слайд 4Классы поставщиков данных
Для поставщика SqlClient это:
SqlConnection,
SqlCommand,
SqlDataReader,
SqlDataAdapter.

Все классы поставщиков

наследуют абстрактных предков, например,
DBConnection ? SqlConnection, DBCommand ?

SqlCommand

Для поставщика SqlServerCe это:
SqlCeConnection,
SqlCeCommand,
SqlCeDataReader,
SqlCeDataAdapter.

Классы поставщиков данныхДля поставщика SqlClient это:SqlConnection,SqlCommand, SqlDataReader, SqlDataAdapter.Все классы поставщиков наследуют абстрактных предков, например,DBConnection ? SqlConnection,

Слайд 5Класс Connection
Устанавливает соединение с хранилищем данных методом Open(). Основное свойство

– ConnectionString – строка соединения.

Позволяет начать транзакцию методом BeginTransaction()

(завершение или откат транзакции выполняются методами объекта Transaction, который возвращает BeginTransaction()).


string conStr = "Data Source=|DataDirectory|GB.sdf";
SqlCeConnection connection = new SqlCeConnection(conStr);

На сайте http://www.connectionstrings.com/ можно найти примеры разнообразных строк соединения

Класс ConnectionУстанавливает соединение с хранилищем данных методом Open(). Основное свойство – ConnectionString – строка соединения. Позволяет начать

Слайд 6Класс Command
Представляет собой SQL-оператор или хранимую процедуру.

Sql-команда формируется свойствами

CommandText и CommandType.

Параметры команды устанавливаются коллекцией Parameters.

Объект Command связывается

с объектом соединения свойством Connection.

Чтобы выполнить команду, нужно использовать один из методов:
ExecuteNonQuery() – для изменения данных,
ExecuteReader() – создает поток DataReader для чтения данных из хранилища,
ExecuteScalar() – создает поток DataReader, из которого читает единственное значение – первый столбец первой строки.


string commandString = "SELECT Id, Text, Author, RecordDate FROM Records";

SqlCeCommand command = new SqlCeCommand(commandString, connection);

Класс CommandПредставляет собой SQL-оператор или хранимую процедуру. Sql-команда формируется свойствами CommandText и CommandType.Параметры команды устанавливаются коллекцией Parameters.

Слайд 7Класс DataReader

using (SqlCeDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())

{
Id = (int)reader["Id"];
}
}
Позволяет только

читать данные из хранилища и только в одном направлении.
Собственно чтение выполняет метод Read().

После открытия потока данных указатель находится перед первой записью.

Класс DataReaderusing (SqlCeDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection)) {  while (reader.Read()) {    Id = (int)reader[

Слайд 8Пример
В базе данных есть таблица Records

ПримерВ базе данных есть таблица Records

Слайд 9Получить коллекцию записей
string conStr = "Data Source=|DataDirectory|GB.sdf";

SqlCeConnection connection = new SqlCeConnection(conStr);

string sql = "SELECT Id, Text, Author, RecordDate FROM Records";

SqlCeCommand command = new SqlCeCommand(sql, connection);
connection.Open();

List result = new List();

using (SqlCeDataReader reader =
command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read()) {
Record record = new Record() {
Id = (int)reader["Id"],
Text = (string)reader["Text"],
Author = (string)reader["Author"],
RecordDate = (DateTime)reader["RecordDate"],
};
result.Add(record);
}
}

Слайд 10Приложение GuestBook – гостевая книга
Разработать приложение «Гостевая книга»
Каждый желающий может

сделать запись в гостевой книге, нужно только ввести текст записи

и свое имя. Все могут читать внесенные записи. Гостевая книга хранится в базе данных.

Дополнительно: записи можно упорядочивать и фильтровать по вхождению заданной подстроки в имя гостя или в текст записи.

Приложение GuestBook –  гостевая книгаРазработать приложение «Гостевая книга»Каждый желающий может сделать запись в гостевой книге, нужно

Слайд 11GuestBook. Главная страница
Создадим приложение MVC 4 (Basic). Назовем его

GuestBook.

GuestBook. Главная страницаСоздадим приложение MVC 4 (Basic).  Назовем его GuestBook.

Слайд 12Модель
public class Record
{

public int Id { set; get; }

public string Text { set; get; }
public string Author { set; get; }
public DateTime RecordDate { set; get; }
}

Модель гостевой книги представляет собой коллекцию объектов Record.

В качестве СУБД используем SqlServer CE 4.0 или SqlExpress.

Модель  public class Record  {    public int Id { set; get; }

Слайд 13SqlServer CE 4.0
SqlServer CE 4.0 представляет собой исполняемую программу, которая

просто копируется в каталог bin веб-приложения, никакого другого развертывания не

требуется.

Сервер поддерживает многопоточные запросы, поэтому может использоваться в небольших ASP.NET приложениях.

SqlServer CE допускает тот же доступ к данным, что и полная версия (ADO.NET, EF), но не имеет хранимых процедур и представлений.

Бесплатен.

SqlServer CE 4.0SqlServer CE 4.0 представляет собой исполняемую программу, которая просто копируется в каталог bin веб-приложения, никакого

Слайд 14Загрузка пакета через NuGet
Microsoft SQL Server Compact Edition

Загрузка пакета через NuGetMicrosoft SQL Server Compact Edition

Слайд 15Схема данных
Добавим в каталог App_Data базу данных в формате .sdf

Схема данныхДобавим в каталог App_Data базу данных в формате .sdf .

Слайд 16



Одним из важнейших аспектов проектирования приложения является выбор архитектуры.
Классическим примером

является многослйная архитектура.

На самом верху – уровень представления (Presentation Layer):
Предназначен

для взаимодействия с пользователем.

За уровнем представления следует уровень бизнес логики (Business Logic Layer):
Осуществляет логическую обработку поступающих команд и бизнес правил.

В самом низу располагается уровень доступа к данным (Data Access Layer):
Осуществляет доступ к хранилищу данных в двустороннем направлении.

Многослйная архитектура

Одним из важнейших аспектов проектирования приложения является выбор архитектуры.Классическим примером является многослйная архитектура.На самом верху – уровень

Слайд 17Слой доступа к данным
В слое доступа всю техническую работу по

общению с базой будут выполнять классы ADO.NET

Слой доступа к даннымВ слое доступа всю техническую работу по общению с базой будут выполнять классы ADO.NET

Слайд 18Cлой доступа к данным
public class Repository
{

public string conStr = "Data Source=|DataDirectory|GB.sdf";

public List GetRecords() {
SqlCeConnection connection = new SqlCeConnection(conStr);
string commandString = "SELECT Id, Text, Author, RecordDate FROM Records";
SqlCeCommand command = new SqlCeCommand(commandString, connection);
connection.Open();
//
List result = new List();
//
using (SqlCeDataReader reader =
command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read()) {
Record record = new Record() {
Id = (int)reader["Id"],
Text = (string)reader["Text"],
Author = (string)reader["Author"],
RecordDate = (DateTime)reader["RecordDate"],
};
result.Add(record);
}
}
return result;
}
}

Слой доступа выполнен по шаблону Repository – класс без состояния с интерфейсом, подобным коллекции.

Cлой доступа к данным  public class Repository  {   public string conStr =

Слайд 19Слой доступа к данным
Метод Create()

public void

CreateRecord(Record record)
{
string commandString

= @"INSERT INTO Records (Text, Author, RecordDate)
VALUES (@Text, @Author, @RecordDate) ";

using (SqlCeConnection connection = new SqlCeConnection(conStr))
{
SqlCeCommand command = new SqlCeCommand(commandString, connection);
command.Parameters.AddWithValue("@Text", record.Text);
command.Parameters.AddWithValue("@Author", record.Author);
command.Parameters.AddWithValue("@RecordDate", record.RecordDate);
connection.Open();
command.ExecuteNonQuery();
}
}

Класс Command имеет коллекцию параметров.
Параметризованные команды выполняются быстрее и позволяют избежать sql-инъекций.

Слой доступа к даннымМетод Create()    public void CreateRecord(Record record)   {

Слайд 20SQL-инъекции



Если вместо параметризованной формы команды

"INSERT INTO Records (Text) VALUES

(@Text)"

использовать конкатенацию строк

"INSERT INTO Records (Text) VALUES (" + text

+ ")"

то при определенных значениях строки text

text = "'a'); DELETE * FROM Records--"

может получиться вредоносный код

"INSERT INTO Records (Text) VALUES ('a'); DELETE * FROM Records--)"

; - граница начала нового оператора
-- - коментирует оставшуюся часть оператора.

SQL-инъекцииЕсли вместо параметризованной формы команды

Слайд 21Строка соединения в web.config

connectionString="Data Source=|DataDirectory|GB.sdf"

providerName="System.Data.SqlServerCe.4.0" />

public string conStr = "Data Source=|DataDirectory|GB.sdf";

public string conStr =
WebConfigurationManager.ConnectionStrings["GB"].ConnectionString;

Изменение в классе Repository:

Хранение строки соединения в web.config, позволяет изменять параметры соединения без перекомпиляции приложения.

WebConfigurationManager – класс для работы с файлами конфигурации web приложения.

Строка соединения в web.config    public string conStr =

Слайд 22Контроллер Home
Repository repository = new Repository();

public ActionResult Index()
{

return View(repository.Read);
}
Контроллер Home    Repository repository = new Repository();    public ActionResult Index()

Слайд 23Представление Home/Index
public ActionResult Index()
{
return

View(new Repository().Read());
}

Представление Home/Index  public ActionResult Index() {   return View(new Repository().Read()); }

Слайд 24Методы HomeController.Create()
Два метода Create() в HomeController

//
// GET: /Home/Create

public ActionResult Create()
{
return View();
}

//
// POST: /Home/Create
[HttpPost]
public ActionResult Create(Record record)
{
try
{
repository.Create(record);
return RedirectToAction("Index");
}
catch
{
return View();
}
}


Методы HomeController.Create()Два метода Create() в HomeController      //    // GET:

Слайд 25Различие между GET и POST

Различие между GET и POST

Слайд 26Представление Home/Create
Типизированное представление дает возможность сгруппировать данные, внесенные в форму

пользователем, в объект Record и передать его во второй метод

Create().
Представление Home/CreateТипизированное представление дает возможность сгруппировать данные, внесенные в форму пользователем, в объект Record и передать его

Слайд 27Самостоятельно
Закончить гостевую книгу, сделав:
Удаление записей.
Изменение записей.
Проверку ввода.

СамостоятельноЗакончить гостевую книгу, сделав:	Удаление записей.	Изменение записей.	Проверку ввода.

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика