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


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

Содержание

ADO.NET ADO .NET (ActiveX Data Objects .NET) набор классов, реализующих программные интерфейсы для облегчения подключения к базам данных из приложения
ADO.NET ADO.NET ADO .NET (ActiveX Data Objects .NET) набор классов, реализующих программные интерфейсы для облегчения подключения к базам данных Три стороны ADO.NET Подключенный уровень (Connected layer) : Явное подключение к хранилищу данных  Автономный Реляционные базы данных. 
 Основные понятия столбец (поле, атрибут)  строка (запись, кортеж)  таблица первичный ключ таблицы Доступ к данным (упрощенная схема) Поставщик данных (Data Provider) Набор типов классов поставщика данных:  Connection – обеспечивает подключение к Имеющиеся в .Net поставщики данных SQL Server - предоставляет оптимизированный доступ к базам данных SQL Работа в подключенном режиме Подключение к базе данных. 
 Строка соединения // Создание открытого подключения using (SqlConnection cn = Подключение к базе данных. 
 Строка соединения // Создание строки подключения с помощью объекта построителя Элемент Элемент   // Получение строки подключения из *.config string cnStr = ConfigurationManager.ConnectionStrings[ Подключение к базе данных. 
 Класс Connection  Выполняет обмен данными между базой данных и Модель работы в подключенном режиме  using (SqlConnection cn = new SqlConnection()) { 	cn.ConnectionString = Запросы (Queries)  Запросы, которые не возвращают записей:  UPDATE Customers Set CompanyName = 'NewHappyName' Класс Command  Класс Command позволяет выполнить запросы к базе данных (выборку, обновление, дополнение, удаление Класс Command  Свойства: CommandType:  CommandType.Text (по умолчанию)- операторы SQL ; CommandType.TableDirect – работа Создание экземпляра Command  //Открыть подключение cn.Open();  // Создание объекта команды с помощью конструктора Основные методы выполнения Command  ExecuteReader() - выполняет оператор SELECT, создает и возвращает ссылку на Метод ExecuteNonQuery(). Пример  string strSQL = Метод ExecuteReader(). Пример  string strSQL = Задание параметров с помощью типа DbParameter  В SQL запросе в Command.Text можно задавать переменные Задание параметров с помощью типа DbParameter  Для Odbc поля параметра задаются символами «?»: Добавление параметров   string strSQL = string.Format( Добавление параметров  testCommand.Parameters.AddWithValue( Хранимые процедуры (Stored Procedures)  Хранимая процедура (stored procedure) — это именованный блок SQL-кода, хранимый Пример вызова хранимой процедуры  using (SqlCommand cmd = new SqlCommand( Транзакции  Транзакция — это набор операций в базе данных, которые должны быть либо все Транзакции. Пример   // Выборка имени по идентификатору клиента string fName = string.Empty; string Транзакции. Пример  // Создание объектов команд для каждого шага операции. SqlCommand cmdRemove = new Транзакции. Пример  SqlTransaction tx = null; try { tx = cn.BeginTransaction(); // Включение команд Работа в отключенном режиме Схема работы в отключенном режиме Объект DataSet  представляет собой контейнер для любого количества объектов DataTable, каждый из которых содержит Объект DataSet  DataSet carsInventoryDS = new DataSet( Объект DataColumn  Представляет один столбец в объекте DataTable  Множество всех объектов DataColumn, содержащихся Объект DataColumn  DataColumn carIDColumn = new DataColumn( Объект DataColumn  carIDColumn.AutoIncrement = true; carIDColumn.AutoIncrementSeed = 0; carIDColumn.AutoIncrementStep = 1;  // Добавление Объект DataRow  Представляет конкретные данные в таблице  Невозможно напрямую создать объект типа DataRow: Объект DataRow  // Добавление строк в таблицу Inventory DataRow carRow = inventoryTable.NewRow(); carRow[ Чтение данных из DataTable 
 с помощью DataTableReader  // Создание объекта DataTableReader DataTableReader dtReader Адаптер данных  Заполняет объект DataSet объектами DataTable, получая значения из базы данных Адаптер данных  DataSet CarsDS = new DataSet(); SqlDataAdapter dataAdapter = new SqlDataAdapter(); dataAdapter.SelectCommand = LINQ to DataSet  Чтобы использовать LINQ to DataSet нужно получить объект  DataTable, совместимый Задание  Модифицировать программу Книжная картотека так, чтобы  данные о книгах хранились в базе Q & A
Слайды и текст этой презентации

Слайд 1 ADO.NET

ADO.NET

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

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

для облегчения подключения к базам данных из приложения



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

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

к хранилищу данных

Автономный уровень (disconnected layer):
Работа с копией данных

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

Entity Framework:
Сокрытие низкоуровневых

деталей работы с базой данных



Слайд 4 Реляционные базы данных. Основные понятия
столбец (поле, атрибут)
строка (запись, кортеж)

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


таблица
первичный ключ таблицы (primary key)
внешний ключ таблицы (foreign key)



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

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

Слайд 6 Поставщик данных (Data Provider)
Набор типов классов поставщика данных:

Connection

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

– обеспечивает подключение к БД;
Command – для управления БД;

позволяет выполнять команды SQL или хранимые процедуры;
DataReader – предоставляет доступный

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




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

Имеющиеся в .Net поставщики данныхSQL Server - предоставляет оптимизированный доступ к базам данных 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 = new SqlConnection(){

подключения
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

подключения с помощью объекта построителя
SqlConnectionStringBuilder connect = new SqlConnectionStringBuilder();
connect.InitialCatalog

= "Autolot";
connect.DataSource = @"(local)\SQLEXPRESS";
connect.ConnectTimeout = 30;
connect.IntegratedSecurity = true;


Слайд 11 Элемент

Элемент

Security=True;Pooling=False"/>


Слайд 12 Элемент
// Получение строки подключения из *.config
string

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

cnStr =
ConfigurationManager.ConnectionStrings["AutoLotSqlProvider"].ConnectionString;



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

Выполняет обмен данными

Подключение к базе данных. 
 Класс ConnectionВыполняет обмен данными между базой данных и приложениемСвойства:ConnectionStringConnectionTimeoutDataBaseStateМетоды:Open() –

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

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

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

закрытие соединения
BeginTransaction()


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

using (SqlConnection cn =

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

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

подключения
cn.Close();
}
}


Слайд 15 Запросы (Queries)

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

UPDATE Customers Set

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

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 – вызов

– работа с конкретной таблицей;
CommandType.StoredProcedure – вызов хранимой в

БД процедуры.

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

(для CommandType.TableDirect);
имя хранимой процедуры с параметрами (для CommandType.StoredProcedure);

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


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

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

// Создание объекта команды с

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

помощью конструктора
string strSQL = "Select * From Inventory";
SqlCommand myCommand

= new SqlCommand(strSQL, cn);

// Создание еще одного объекта команды с

помощью свойств
SqlCommand testCommand = new SqlCommand();
testCommand.Connection = cn;
testCommand.CommandText = strSQL;

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


Слайд 19 Основные методы выполнения Command

ExecuteReader() - выполняет оператор SELECT,

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

создает и возвращает ссылку на объект DataReader который содержит

результат выполнения запроса.

ExecuteNonQuery() - выполняет операторы INSERT, DELETE, UPDATE на

языке SQL (возвращает количество обработанных записей)

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



Слайд 20 Метод ExecuteNonQuery(). Пример

string strSQL = "UPDATE Customers SET

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

LastName = 'Johnson' WHERE LastName = 'Walton'";
SqlCommand myCommand =

new SqlCommand(strSQL, cn);
int i = myCommand.ExecuteNonQuery();


Слайд 21 Метод ExecuteReader(). Пример

string strSQL = "SELECT * FROM

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

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 запросе

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

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

Параметры позволяют менять

SQL запрос без переписывания его текста

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

процедуры для передачи входных данных и получения результатов




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

Для Odbc поля

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

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

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("Insert Into Inventory" +
"(CarID,

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

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("@CarId", 1212);
testCommand.Parameters.AddWithValue("@Make", "Skoda");
testCommand.Parameters.AddWithValue("@Color", "Grey");
testCommand.Parameters.AddWithValue("@PetName", "Skoda");

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

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

Хранимая процедура (stored procedure) —

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

это именованный блок SQL-кода, хранимый в базе данных

B одной

процедуре можно сгруппировать несколько запросов;
B одной процедуре можно сослаться на

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

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

using (SqlCommand cmd = new

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

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]

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

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

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

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(string.Format(

операции.
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();
// Включение

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

команд в транзакцию
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

представляет собой контейнер для любого количества объектов

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

DataTable, каждый из которых содержит коллекцию объектов DataRow и

DataColumn

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

с помощью адаптера данных




Слайд 36 Объект DataSet

DataSet carsInventoryDS = new DataSet("Car Inventory");
carsInventoryDS.ExtendedProperties["TimeStamp"] =

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

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



Слайд 37 Объект DataColumn

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

Множество всех

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

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

информацию схемы таблицы


Слайд 38 Объект DataColumn

DataColumn carIDColumn = new DataColumn("CarID", typeof(int));
//строковое значение

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

для отображения при выводе данных
carIDColumn.Caption = "Car ID";
carIDColumn.ReadOnly =

true;
carIDColumn.AllowDBNull = false;
carIDColumn.Unique = true;



Слайд 39 Объект DataColumn

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

//

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

Добавление объектов DataColumn в DataTable
DataTable inventoryTable = new DataTable("Inventory");
inventoryTable.Columns.AddRange(new

DataColumn[] { carIDColumn,carMakeColumn, carColorColumn, carPetName });


Слайд 40 Объект DataRow

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

Невозможно напрямую создать

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

объект типа DataRow:

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

new DataRow();


Слайд 41 Объект DataRow

// Добавление строк в таблицу Inventory
DataRow carRow

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

= inventoryTable.NewRow();
carRow["Make"] = "BMW";
carRow["Color"] = "Black";
carRow["PetName"] = "Hamlet";
inventoryTable.Rows.Add(carRow);


Слайд 42 Объект DataTable

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



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

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

// Создание

Чтение данных из DataTable 
 с помощью DataTableReader// Создание объекта DataTableReaderDataTableReader dtReader = inventoryTable.CreateDataReader();while (dtReader.Read()){for

объекта 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 назад

из базы данных

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

данных для обработки

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



Слайд 45 Адаптер данных

DataSet CarsDS = new DataSet();
SqlDataAdapter dataAdapter =

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

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 нужно

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

получить объект
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 Задание

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

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

книгах хранились в базе данных(база данных на ваше
усмотрение)

Должна

быть возможность изменить строку подключения к базе
данных, не пересобирая приложения

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

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


  • Имя файла: adonet.pptx
  • Количество просмотров: 182
  • Количество скачиваний: 0