Презентация на тему ADO.NET

ADO.NET, из раздела: Информатика.  Презентацию в формате PowerPoint (pptx) можно скачать внизу страницы, поделившись ссылкой в социальных сетях! Презентации взяты из открытого доступа или загружены их авторами, администрация сайта не отвечает за достоверность информации в них. Все права принадлежат авторам материалов: Политика защиты авторских прав

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

Слайд 1

ADO.NET

ADO.NET


Слайд 2

ADO.NETADO .NET (ActiveX Data Objects .NET) набор классов, реализующих программные интерфейсы для облегчения подключения к базам данных из приложения

ADO.NET

ADO .NET (ActiveX Data Objects .NET) набор классов, реализующих программные интерфейсы для облегчения подключения к базам данных из приложения



Слайд 3

Три стороны ADO.NETПодключенный уровень (Connected layer) :Явное подключение к хранилищу данныхАвтономный уровень

Три стороны ADO.NET

Подключенный уровень (Connected layer) :
Явное подключение к хранилищу данных

Автономный уровень (disconnected layer):
Работа с копией данных из хранилища. Подключение открывается только для изменения данных

Entity Framework:
Сокрытие низкоуровневых деталей работы с базой данных



Слайд 4

Реляционные базы данных.  Основные понятиястолбец (поле, атрибут) строка (запись, кортеж) таблицапервичный ключ таблицы (primary key)внешний ключ таблицы (foreign key)

Реляционные базы данных. Основные понятия

столбец (поле, атрибут)
строка (запись, кортеж)
таблица
первичный ключ таблицы (primary key)
внешний ключ таблицы (foreign key)



Слайд 5

Доступ к данным (упрощенная схема)

Доступ к данным (упрощенная схема)



Слайд 6

Поставщик данных (Data Provider)Набор типов классов поставщика данных:Connection – обеспечивает подключение к

Поставщик данных (Data Provider)

Набор типов классов поставщика данных:

Connection – обеспечивает подключение к БД;
Command – для управления БД; позволяет выполнять команды SQL или хранимые процедуры;
DataReader – предоставляет доступный только для однонаправленного чтения набор записей, подключенный к БД;
DataAdapter – заполняет отсоединенный объект DataSet или DataTable и обновляет его содержимое.
Parameter - именованный параметр в параметризованном запросе
Transaction - транзакция




Слайд 7

Имеющиеся в .Net поставщики данныхSQL Server - предоставляет оптимизированный доступ к базам

Имеющиеся в .Net поставщики данных

SQL Server - предоставляет оптимизированный доступ к базам данных SQL Server (версии 7.0 и выше)

OLE DB - предоставляет доступ к любому источнику данных, который имеет драйвер OLE DB. Это включает базы данных SQL Server версий, предшествующих 7.0

Oracle – устарел. Используйте DP.NET (Oracle Data Provider для .NET) производства Oracle, который доступен на веб-сайте http://www.oracle.com

ODBC - предоставляет доступ к любому источнику данных, имеющему драйвер ODBC



Слайд 8

Работа в подключенном режиме

Работа в подключенном режиме



Слайд 9

Подключение к базе данных.  Строка соединения// Создание открытого подключенияusing (SqlConnection cn

Подключение к базе данных. Строка соединения

// Создание открытого подключения
using (SqlConnection cn = new SqlConnection()
{
cn.ConnectionString = @"Data Source=n102933\SQLEXPRESS2012;Initial Catalog=AutoLot;Integrated Security=SSPI;Pooling=False";
cn.Open();
// Работа с базой данных
cn.Close();
}



Слайд 10

Подключение к базе данных.  Строка соединения// Создание строки подключения с помощью

Подключение к базе данных. Строка соединения

// Создание строки подключения с помощью объекта построителя
SqlConnectionStringBuilder connect = new SqlConnectionStringBuilder();
connect.InitialCatalog = "Autolot";
connect.DataSource = @"(local)\SQLEXPRESS";
connect.ConnectTimeout = 30;
connect.IntegratedSecurity = true;



Слайд 11

Элемент

Элемент


connectionString="Data Source=MICROSOF-1EA29E\SQLEXPRESS;
Initial Catalog=AutoLot;Integrated Security=True;Pooling=False"/>
Source=MICROSOF1EA29E\SQLEXPRESS;
Initial Catalog=AutoLot;Integrated Security=True;Pooling=False"/>




Слайд 12

Элемент // Получение строки подключения из *.configstring cnStr =ConfigurationManager.ConnectionStrings[

Элемент

// Получение строки подключения из *.config
string cnStr =
ConfigurationManager.ConnectionStrings["AutoLotSqlProvider"].ConnectionString;



Слайд 13

Подключение к базе данных.  Класс ConnectionВыполняет обмен данными между базой данных

Подключение к базе данных. Класс Connection


Выполняет обмен данными между базой данных и приложением

Свойства:
ConnectionString
ConnectionTimeout
DataBase
State

Методы:
Open() – открытие соединения
Close() – закрытие соединения
BeginTransaction()


Слайд 14

Модель работы в подключенном режимеusing (SqlConnection cn = new SqlConnection()){	cn.ConnectionString = connect.ConnectionString;	try	{		//Открыть

Модель работы в подключенном режиме


using (SqlConnection cn = new SqlConnection())
{
cn.ConnectionString = connect.ConnectionString;
try
{
//Открыть подключение
cn.Open();
}
catch (SqlException ex)
{
}
finally
{
// Гарантировать освобождение подключения
cn.Close();
}
}


Слайд 15

Запросы (Queries)Запросы, которые не возвращают записей:UPDATE Customers Set CompanyName = 'NewHappyName' 						WHERE

Запросы (Queries)


Запросы, которые не возвращают записей:

UPDATE Customers Set CompanyName = 'NewHappyName'
WHERE CustomerID = '007‘

CREATE TABLE myTable ( Field1 int NOT NULL Field2 varchar() )


Запросы, возвращающие значения из базы данных

SELECT CustomerID,
CompanyName,
ContactName
FROM Customers
WHERE Phone = '222–3322'


Слайд 16

Класс CommandКласс Command позволяет выполнить запросы к базе данных (выборку, обновление, дополнение, удаление и т. д.).

Класс Command


Класс Command позволяет выполнить запросы к базе данных (выборку, обновление, дополнение, удаление и т. д.).



Слайд 17

Класс CommandСвойства:CommandType: CommandType.Text (по умолчанию)- операторы SQL ;CommandType.TableDirect – работа с конкретной

Класс Command


Свойства:
CommandType:
CommandType.Text (по умолчанию)- операторы SQL ;
CommandType.TableDirect – работа с конкретной таблицей;
CommandType.StoredProcedure – вызов хранимой в БД процедуры.

CommandText содержит:
текст оператора SQL (для типа CommandType.Text);
имя таблицы (для CommandType.TableDirect);
имя хранимой процедуры с параметрами (для CommandType.StoredProcedure);

Connection – ссылка на открытое соединение (объект Connection);
Parameters – коллекция параметров запроса


Слайд 18

Создание экземпляра Command//Открыть подключениеcn.Open();// Создание объекта команды с помощью конструктораstring strSQL =

Создание экземпляра Command


//Открыть подключение
cn.Open();

// Создание объекта команды с помощью конструктора
string strSQL = "Select * From Inventory";
SqlCommand myCommand = new SqlCommand(strSQL, cn);

// Создание еще одного объекта команды с помощью свойств
SqlCommand testCommand = new SqlCommand();
testCommand.Connection = cn;
testCommand.CommandText = strSQL;

//Открыть подключение
cn.Close();


Слайд 19

Основные методы выполнения CommandExecuteReader() - выполняет оператор SELECT, создает и возвращает ссылку

Основные методы выполнения Command


ExecuteReader() - выполняет оператор SELECT, создает и возвращает ссылку на объект DataReader который содержит результат выполнения запроса.

ExecuteNonQuery() - выполняет операторы INSERT, DELETE, UPDATE на языке SQL (возвращает количество обработанных записей)

ExecuteScalar() – возвращает первую строку первого столбца в результирующем наборе (используя функции COUNT, AVG, MIN, MAX, SUM);



Слайд 20

Метод ExecuteNonQuery(). Примерstring strSQL =

Метод ExecuteNonQuery(). Пример


string strSQL = "UPDATE Customers SET LastName = 'Johnson' WHERE LastName = 'Walton'";
SqlCommand myCommand = new SqlCommand(strSQL, cn);
int i = myCommand.ExecuteNonQuery();


Слайд 21

Метод ExecuteReader(). Примерstring strSQL =

Метод ExecuteReader(). Пример


string strSQL = "SELECT * FROM Inventory";
SqlCommand myCommand = new SqlCommand(strSQL, cn);
SqlDataReader dr = myCommand.ExecuteReader();
while (dr.Read())
{
Console.WriteLine("ID: {0} Car Pet Name: {1}", dr[0], dr[3]);
}


Слайд 22

Задание параметров с помощью типа DbParameterВ SQL запросе в Command.Text можно задавать

Задание параметров с помощью типа DbParameter


В SQL запросе в Command.Text можно задавать переменные – параметры

Параметры позволяют менять SQL запрос без переписывания его текста

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




Слайд 23

Задание параметров с помощью типа DbParameterДля Odbc поля параметра задаются символами «?»:select

Задание параметров с помощью типа DbParameter


Для Odbc поля параметра задаются символами «?»:

select EmpId, Title, FirstName, LastName
from Employees where (FirstName = ?, LastName = ? )

Для OleDbCommand и SqlCommand используется именованные поля параметров - @Xxxxx:

select EmpId, Title, FirstName, LastName
from Employees
where (FirstName = @First, LastName = @Last )




Слайд 24

Добавление параметровstring strSQL = string.Format(

Добавление параметров



string strSQL = string.Format("Insert Into Inventory" +
"(CarID, Make, Color, PetName) Values(@CarId, @Make, @Color, @PetName)");

SqlCommand testCommand = new SqlCommand(strSQL, cn);
SqlParameter param = new SqlParameter();
param.ParameterName = "@CarID";
param.Value = id;
param.SqlDbType = SqlDbType.Int;
testCommand.Parameters.Add(param);


Слайд 25

Добавление параметровtestCommand.Parameters.AddWithValue(

Добавление параметров


testCommand.Parameters.AddWithValue("@CarId", 1212);
testCommand.Parameters.AddWithValue("@Make", "Skoda");
testCommand.Parameters.AddWithValue("@Color", "Grey");
testCommand.Parameters.AddWithValue("@PetName", "Skoda");


Слайд 26

Хранимые процедуры (Stored Procedures)Хранимая процедура (stored procedure) — это именованный блок SQL-кода,

Хранимые процедуры (Stored Procedures)


Хранимая процедура (stored procedure) — это именованный блок SQL-кода, хранимый в базе данных

B одной процедуре можно сгруппировать несколько запросов;
B одной процедуре можно сослаться на другие сохраненные процедуры, что упрощает процедуры обращения к БД;
Bыполняются быстрее, чем индивидуальные предложения SQL.


Слайд 27

Пример вызова хранимой процедурыusing (SqlCommand cmd = new SqlCommand(

Пример вызова хранимой процедуры


using (SqlCommand cmd = new SqlCommand("GetPetName", cn))
{
cmd.CommandType = CommandType.StoredProcedure;
// Входной параметр.
SqlParameter param = new SqlParameter();
param.ParameterName = "@carID";
param.SqlDbType = SqlDbType.Int;
param.Value = 1212;
param.Direction = ParameterDirection.Input;
cmd.Parameters.Add(param);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine("Car Pet Name: {0}", dr[0]);
}
}


Слайд 28

Пример вызова хранимой процедурыUSE [AutoLot]GO/****** Object: StoredProcedure [dbo].[GetPetName]  Script Date: 11/13/2015

Пример вызова хранимой процедуры


USE [AutoLot]
GO
/****** Object: StoredProcedure [dbo].[GetPetName] Script Date: 11/13/2015 11:21:16 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetPetName]
@carID int
AS
SELECT PetName from Inventory
where CarID = @carID


Слайд 29

ТранзакцииТранзакция — это набор операций в базе данных, которые должны быть либо

Транзакции


Транзакция — это набор операций в базе данных, которые должны быть либо все выполнены, либо все не выполнены


Слайд 30

Транзакции. Пример // Выборка имени по идентификатору клиентаstring fName = string.Empty;string lName

Транзакции. Пример


// Выборка имени по идентификатору клиента
string fName = string.Empty;
string lName = string.Empty;
SqlCommand cmdSelect =
new SqlCommand(string.Format("Select * from Customers where CustID = {0}", custId), cn);
using (SqlDataReader dr = cmdSelect.ExecuteReader())
{
if (dr.HasRows)
{
dr.Read();
fName = (string)dr["FirstName"];
lName = (string)dr["LastName"];
}
else return;
}


Слайд 31

Транзакции. Пример// Создание объектов команд для каждого шага операции.SqlCommand cmdRemove = new

Транзакции. Пример


// Создание объектов команд для каждого шага операции.
SqlCommand cmdRemove = new SqlCommand(
string.Format("Delete from Customers where CustID = {0}", custId), cn);
SqlCommand cmdInsert = new SqlCommand(string.Format("Insert Into CreditRisks" + "(CustID, FirstName, LastName) Values" +
"({0}, '{1}', '{2}')", custId, fName, lName), cn);


Слайд 32

Транзакции. ПримерSqlTransaction tx = null;try{tx = cn.BeginTransaction();// Включение команд в транзакциюcmdInsert.Transaction =

Транзакции. Пример


SqlTransaction tx = null;
try
{
tx = cn.BeginTransaction();
// Включение команд в транзакцию
cmdInsert.Transaction = tx;
cmdRemove.Transaction = tx;
// Выполнение команд.
cmdInsert.ExecuteNonQuery();
cmdRemove.ExecuteNonQuery();
tx.Commit();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// При возникновении любой ошибки выполняется откат транзакции.
tx.Rollback();
}


Слайд 33

Работа в отключенном режиме

Работа в отключенном режиме



Слайд 34

Схема работы в отключенном режиме

Схема работы в отключенном режиме



Слайд 35

Объект DataSetпредставляет собой контейнер для любого количества объектов DataTable, каждый из которых

Объект DataSet


представляет собой контейнер для любого количества объектов DataTable, каждый из которых содержит коллекцию объектов DataRow и DataColumn

Способы создания объекта DataSet:
Создать программным образом
Загрузить из файла
Загрузить из БД с помощью адаптера данных




Слайд 36

Объект DataSetDataSet carsInventoryDS = new DataSet(

Объект DataSet


DataSet carsInventoryDS = new DataSet("Car Inventory");
carsInventoryDS.ExtendedProperties["TimeStamp"] = DateTime.Now;
carsInventoryDS.ExtendedProperties["DataSetID"] = Guid.NewGuid();
carsInventoryDS.ExtendedProperties["Company"] = "Мой магазин";



Слайд 37

Объект DataColumnПредставляет один столбец в объекте DataTableМножество всех объектов DataColumn, содержащихся в

Объект DataColumn


Представляет один столбец в объекте DataTable

Множество всех объектов DataColumn, содержащихся в данном объекте DataTable, содержит всю информацию схемы таблицы


Слайд 38

Объект DataColumnDataColumn carIDColumn = new DataColumn(

Объект DataColumn


DataColumn carIDColumn = new DataColumn("CarID", typeof(int));
//строковое значение для отображения при выводе данных
carIDColumn.Caption = "Car ID";
carIDColumn.ReadOnly = true;
carIDColumn.AllowDBNull = false;
carIDColumn.Unique = true;



Слайд 39

Объект DataColumncarIDColumn.AutoIncrement = true;carIDColumn.AutoIncrementSeed = 0;carIDColumn.AutoIncrementStep = 1;// Добавление объектов DataColumn в

Объект DataColumn


carIDColumn.AutoIncrement = true;
carIDColumn.AutoIncrementSeed = 0;
carIDColumn.AutoIncrementStep = 1;

// Добавление объектов DataColumn в DataTable
DataTable inventoryTable = new DataTable("Inventory");
inventoryTable.Columns.AddRange(new DataColumn[] { carIDColumn,carMakeColumn, carColorColumn, carPetName });


Слайд 40

Объект DataRowПредставляет конкретные данные в таблицеНевозможно напрямую создать объект типа DataRow:// Ошибка!

Объект DataRow


Представляет конкретные данные в таблице

Невозможно напрямую создать объект типа DataRow:

// Ошибка! Нет общедоступного конструктора!
DataRow dr = new DataRow();


Слайд 41

Объект DataRow// Добавление строк в таблицу InventoryDataRow carRow = inventoryTable.NewRow();carRow[

Объект DataRow


// Добавление строк в таблицу Inventory
DataRow carRow = inventoryTable.NewRow();
carRow["Make"] = "BMW";
carRow["Color"] = "Black";
carRow["PetName"] = "Hamlet";
inventoryTable.Rows.Add(carRow);


Слайд 42

Объект DataTableПредставляет одну таблицуСодержит схему и данные

Объект DataTable


Представляет одну таблицу
Содержит схему и данные




Слайд 43

Чтение данных из DataTable  с помощью DataTableReader// Создание объекта DataTableReaderDataTableReader dtReader

Чтение данных из DataTable с помощью DataTableReader


// Создание объекта DataTableReader
DataTableReader dtReader = inventoryTable.CreateDataReader();

while (dtReader.Read())
{
for (int i = 0; i < dtReader.FieldCount; i++)
Console.Write("{0}\t", dtReader.GetValue(i).ToString());
}
dtReader.Close();




Слайд 44

Адаптер данныхЗаполняет объект DataSet объектами DataTable, получая значения из базы данных Отправляет

Адаптер данных


Заполняет объект DataSet объектами DataTable, получая значения из базы данных

Отправляет измененные DataTable назад в базу данных для обработки

Управляет подключением к базе данных



Слайд 45

Адаптер данныхDataSet CarsDS = new DataSet();SqlDataAdapter dataAdapter = new SqlDataAdapter();dataAdapter.SelectCommand = selectCmd;

Адаптер данных


DataSet CarsDS = new DataSet();
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = selectCmd;

// executes SelectCommand, DeleteCommand, UpdateCommand
dataAdapter.Fill(CarsDS);

// code to modify data in CarsDS here

dataAdapter.Update(CarsDS); // updates database


Слайд 46

LINQ to DataSetЧтобы использовать LINQ to DataSet нужно получить объект DataTable, совместимый

LINQ to DataSet


Чтобы использовать LINQ to DataSet нужно получить объект
DataTable, совместимый с LINQ с помощью метода расширения
AsEnumerable()
(определен в сборке System.Data.DataSetExtensions .dll)

var cars = from car in inventoryTable.AsEnumerable()
where car.Field("Color") == "Black"
select new
{
PetName = car.Field("PetName"),
Make = car.Field("Make")
};


Слайд 47

ЗаданиеМодифицировать программу Книжная картотека так, чтобы данные о книгах хранились в базе

Задание


Модифицировать программу Книжная картотека так, чтобы
данные о книгах хранились в базе данных(база данных на ваше
усмотрение)

Должна быть возможность изменить строку подключения к базе
данных, не пересобирая приложения (строка подключения
должна храниться в конфигурационном файле).

Выбор модели доступа к данным (присоединённая /
отсоединенная) на ваше усмотрение.