Разработка Windows и Web решений ADO

Содержание

Слайд 2

Что такое ADO.NET? Это компонент доступа к данным в составе .NET

Что такое ADO.NET?

Это компонент доступа к данным в составе .NET Framework
В

его составе присутствует провайдер для соединения с внешними данными
Используются объекты Dataset для локальной обработки в буфере обмена информации из БД и преобразования ее в формат XML
ADO.NET можно использоватьcся:
в Windows приложениях для создания решений по доступу к данным в корпоративных настольных системах
в WEB приложениях для создания решений по доступу к данным через браузер
Для создания приложений для мобильных устройств и создания WEB сервисов

Условия применения ADO.NET

ОС – Windows 2000 (SP2), Windows NT (SP 6a), Windows XP
.NET Framework (msdn.microsoft.com/netframework/downloads/howtoget.asp, .NET runtime, .NET SDK)
MDAC - Microsoft Data Access Components (www.microsoft.com/data) - OLE DB, ADO, и ODBC

Слайд 3

Обзор ADO.NET Предшествующие технологии ODBC (Open Database Connectivity) Взаимодействует с большим

Обзор ADO.NET Предшествующие технологии

ODBC (Open Database Connectivity)
Взаимодействует с большим числом СУБД
Имеет

набор функций API, который широко используются
Использует язык SQL для доступа к данным
DAO (Data Access Objects)
Программный интерфейс для баз данных JET/ISAM
Использует ActiveX и OLE automation
RDO (Remote Data Objects)
Тесно связан с ODBC
Более подходит к архитектуре клиент/сервер (по сравнению с DAO)
OLE DB
Предоставляет доступ к реляционным и другим типам данных
Построен на основе технологии COM
Допускает и другие, кроме языка SQL, способы извлечения данных
Может использовать драйверы ODBC
Имеет низкоуровневый (C++) интерфейс
ADO (ActiveX Data Objects)
Простой объектно-ориентированный интерфейс
Обеспечивает программный доступ к OLE DB вне C++ (из других языков программирования)
Слайд 4

Цели ADO.NET Оптимальная структура классов Масштабируемость Поддержка XML (иерархические и реляционные

Цели ADO.NET

Оптимальная структура классов
Масштабируемость
Поддержка XML (иерархические и реляционные

данные)
Доступ к данным по протоколу HTTP
Поддержка знакомой программой модели ADO
ADO по прежнему доступна через интерфейс .NET COM
Слайд 5

.NET Framework v.2.6+ для SQL Server или OLE DB .NET Data

.NET Framework

v.2.6+ для SQL Server или OLE DB .NET Data Provider


v2.7+ для ODBC .NET Data Provider
Visual Studio .NET автоматически устанавливается (в версии 2.7+)

ADO.NET, БД и XML

Слайд 6

Возможности провайдера ADO.NET Провайдер предназначен для “захвата” приложением ADO.NET внешних данных

Возможности провайдера ADO.NET

Провайдер предназначен для “захвата” приложением ADO.NET внешних данных
Классы объектов

ADO.NET провайдера помогают выполнять следующие задачи:
соединение с источником данных
захват данных
обработку данных
переопределение данных
Каждый .NET провайдер (SQL Server, Oracle, Access и т.д.) имеет свой набор классов объектов ADO.NET, включая
Connection – соединение с БД
Command – для выполнения команд SELECT, INSERT, UPDATE, DELETE
DataReader – возврат данных, предназначенных только для чтения
DataAdapter - заполняет временный набор данных в буфере обмена с БД и обновляет базу данных значениями из временного набора данных
Слайд 7

Взаимодействие ADO.NET с БД Чтение данных с помощью объекта DataReader Используются

Взаимодействие ADO.NET с БД

Чтение данных с помощью объекта DataReader
Используются классы

объектов Connection и DataReader
Соединение с БД разрывается, пока открыт объект DataReader
Большая скорость разрыва соединения
Использование классов объектов Connection, DataAdapter и Dataset позволяет выполнить
Изменение БД
Масштабирование БД

Что есть Windows приложение .NET

Разрабатывается для локальной установки на ПК пользователя
Может иметь преимущество перед локальными ресурсами (файлами, Microsoft Office и т.п.)
Windows приложение .NET использует классы объектов Windows Form и Window Form control (элемент формы)

Слайд 8

На стартовой странице выполнить команду FILE - NEW PROJECT, выбрать шаблон

На стартовой странице выполнить команду FILE - NEW PROJECT, выбрать

шаблон Windows Application из папки Visual Basic, ввести имя проекта SearchDatabaseWin, OK
С панели инструментов методом “Drag and Drop” трижды перенести на форму Form1 элементы TextBox (текстовое поле) и Labels (метки) и четырежды - элемент Button (кнопка)
По команде VIEW – OPEN SERVER EXPLORER откройте окно с БД, перенесите из БД Northwind MS SQL Server таблицу Shippers на форму. При этом в системный трей (под формой) добавятся объекты SqlConnection1 и SqlDbDataAdapter1
В контекстном меню объекта SqlDbDataAdapter1 выполните команду GENERATE DATASET, указав имя SearchDatabaseWinShippers объекта DataSet. Нажмите OK для размещения объекта с именем SearchDatabaseWinShippers1 в системном трее
Слайд 9

Двойным щелчком по заголовку формы Form1 в процедуре события Load (открыть)

Двойным щелчком по заголовку формы Form1 в процедуре события Load (открыть)

введите выделенный код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SqlDataAdapter1.Fill(SearchDatabaseWinShippers1, "Shippers")
End Sub, где Shippers - имя объекта DataTable набора данных DataSet

Заполните поле формы TextBox1 данными. Для этого выделите его и в окне свойств в ветке DataBindings выберите свойство Text, в наборе SearchDatabaseWinShippers1 разверните таблицу Shippers и укажите поле ShipperID таблицы для связывания его с полем TextBox1 формы. Повторите

настройки для полей TextBox2 и TextBox3 формы, связав их с полями CompanyName и Phone таблицы Shippers

Слайд 10

Навигация по строкам в наборе данных Используйте свойство Position объекта BindingContext

Навигация по строкам в наборе данных

Используйте свойство Position объекта BindingContext

для контроля навигации по строкам или столбцам, отображаемым в текстовых полях формы:
Position.MinValue и Position.MaxValue для перехода на первую и последнюю строку набора
“-= 1” и “+= 1” для перехода на предыдущую или следующую строку
(во время отладки приложения по кнопке F5, можно проверить, что в БД результаты редактирования не вносятся. Они сохраняются в буфере обмена, который чистится после закрытии сессии, т.е. при повторном запуске приложения (http://www.programmingmsaccess.com/mygb.htm)

Процедуры событий нажатия на кнопки

Дважды щелкните на кнопке Button1 и в окне процедуры введите выделенный код
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.BindingContext(SearchDatabaseWinShippers1, "Shippers").Position = _ Me.BindingContext(SearchDatabaseWinShippers1, _ "Shippers").Position.MinValue
End Sub

Слайд 11

Переход по записям

Переход по записям

Слайд 12

Что есть .NET Web приложение? ASP.NET проект .aspx это файл со

Что есть .NET Web приложение?

ASP.NET проект
.aspx это файл со страницей Web,

которая состоит из Web-формы
Приложение должно находиться на сервере приложений IIS (MS Internet Information Services).
Страницы можно открыть с помощью любого браузера

Отличие ASP.NET от ASP (динамических серверных страниц)

ASP.NET и ASP могут выполняться на одном и том же сервере
ASP.NET страницы компилируются, поэтому они выполняются быстрее и масштабируются легче
ASP.NET страницу можно конструировать, как Windows приложение, без ввода кода HTML and Java скрипта

Особенности применения ADO.NET с ASP.NET

Web формы обязательно отсоединяются от источника данных в отличие от Windows форм, которые отсоединяются при выполнении определенных условий
Заполняют элементы формы данными из БД, могут отобразить как отсоединенные данные так и модифицированный набор данных

Слайд 13

Создание ASP.NET приложения На стартовой странице выполните команду FILE - New

Создание ASP.NET приложения

На стартовой странице выполните команду FILE - New

Project. Выберите ASP.NET Web Application в папке Visual Basic Projects. Введите имя папки для размещения на WEB сервере http://localhost/SearchDatabaseWeb, OK
При желании можно ввести user name, password, и domain для доступа к Web серверу. Стартовая страница имеет по умолчанию имя WebForm1.aspx

Добавьте на форму три элемента Textbox и три метки Label с панели инструментов. Добавьте четыре кнопки и еще одну – справа от основных кнопок

Слайд 14

Заполнение системного трея с помощью элементов ADO.NET Откройте окно the Server

Заполнение системного трея с помощью элементов ADO.NET

Откройте окно the Server Explorer,

выберите на сервере БД Pubs. Разверните список таблиц и перетащите на форму таблицу Authors.
При этом в системный трей добавятся объекты SqlConnection1 и SqlDataAdapter1
Перетащите на форму объект Dataset из вкладки Data панели инструментов. Укажите его свойство Untyped, OK. Это добавит объект Dataset1 в системный трей

Программный код для страницы WebForm1.aspx

В окне Solution Explorer (проводник решений проекта) нажмите правую кнопку на объекте WebForm1.aspx и выберите команду View Code
Это позволит открыть окно WebForm1.aspx.vb с пустым событием Page_Load открытия страницы.
Заполните набор данных Dataset1 с помощью объекта SqlDataAdapter1 и укажите на отображение первой строки набора. Отредактируйте таблицу через форму.

Слайд 15

SqlDataAdapter1.Fill(DataSet1, "authors") ‘ отображаем первую строку набора If Not Me.IsPostBack Then

SqlDataAdapter1.Fill(DataSet1, "authors")
‘ отображаем первую строку набора
If Not Me.IsPostBack

Then
Session("MyRowID") = 0
MoveRow()
End If
‘ Замена набора данных информацией со страницы
SqlDataAdapter1.UpdateCommand = New SqlClient.SqlCommand( _
"UPDATE authors SET phone = " & "@NewPhone WHERE au_fname = " & _
"@MyFname AND au_lname = @MyLname", SqlConnection1)
‘ Задание параметров @MyFname и @MyLname для операции Update
SqlDataAdapter1.UpdateCommand.Parameters.Add("@NewPhone", SqlDbType.Char, 12, "phone")
Dim prm1 As SqlClient.SqlParameter = SqlDataAdapter1.UpdateCommand.Parameters.Add( _
"@MyFname", SqlDbType.VarChar, 20, "au_fname")
prm1.SourceVersion = DataRowVersion.Original
Dim prm2 As SqlClient.SqlParameter = SqlDataAdapter1.UpdateCommand.Parameters.Add( _
"@MyLname", SqlDbType.VarChar, 40, "au_lname")
prm2.SourceVersion = DataRowVersion.Original
Слайд 16

Sub MoveRow() ‘ Выделенная строка Dim MyRow As DataRow MyRow =

Sub MoveRow()
‘ Выделенная строка
Dim MyRow As DataRow
MyRow = DataSet1.Tables("authors").Rows(Session("MyRowID"))


‘ размещение в полях формы полей таблицы
TextBox1.Text = MyRow(“au_fname”)
TextBox2.Text = MyRow(“au_lname”)
TextBox3.Text = MyRow(“phone”)
End Sub

Установка переменной Session в значение 0 для перехода на первую строку

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Session("MyRowID") = 0
MoveRow()
End Sub

Слайд 17

Перемещение на последнюю строку Private Sub Button4_Click(ByVal sender As System.Object, _

Перемещение на последнюю строку

Private Sub Button4_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button4.Click
Session("MyRowID") = DataSet1.Tables("authors").Rows.Count - 1
MoveRow()
End Sub

Перемещение на следующую строку

Private Sub Button3_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button3.Click
If Session("MyRowID") < DataSet1.Tables("authors").Rows.Count - 1 Then
Session("MyRowID") += 1
MoveRow()
End If
End Sub

Перемещение на предыдущую строку

Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
If Session("MyRowID") > 0 Then
Session("MyRowID") -= 1
MoveRow()
End If
End Sub

Слайд 18

Возврат значения в набор Dataset1 и применение метода Update к объекту

Возврат значения в набор Dataset1 и применение метода Update к объекту

SqlDataAdapter1

Private Sub Button5_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button5.Click
'Point a datarow at the current row in the datatable
Dim MyRow As DataRow
MyRow = DataSet1.Tables("authors").Rows(Session("MyRowID"))
'Populate the phone column value in the datarow with the phone text box value
MyRow(3) = TextBox3.Text
'Invoke the update method
SqlDataAdapter1.Update(DataSet1, "authors")
End Sub

Тестирование Web приложения

Выполнить команду Build. Выполнить на объекте WebForm1.aspx в окне Solution Explorer команду View in Browser. Протестировать кнопки (после применения кнопки Modify закрыть и открыть приложение вновь для проверки факта изменения данных) http://www.programmingmsaccess.com/mygb.htm

Слайд 19

Web-форма БД Access

Web-форма БД Access

Слайд 20

Private Sub Page_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)

Private Sub Page_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles MyBase.Load
OleDbDataAdapter1.Fill(DataSet11, "сотрудники")
If Not Me.IsPostBack Then
Session("таб_номер") = 0
MoveRow()
End If
' Замена набора данных информацией со страницы
' Задание параметров @таб_номер, @ФИО, и @тел_дом для операции Update
OleDbDataAdapter1.UpdateCommand = New OleDb.OleDbCommand("UPDATE сотрудники SET тел_дом=? WHERE таб_номер=?", OleDbConnection1)
OleDbDataAdapter1.UpdateCommand.Parameters.Add("@тел_дом", OleDb.OleDbType.Char, 50, "тел_дом")
Dim prm1 As OleDb.OleDbParameter = OleDbDataAdapter1.UpdateCommand.Parameters.Add("@таб_номер", OleDb.OleDbType.Char, 50, "таб_номер")
‘ указание на ID -поле
prm1.SourceColumn = "таб_номер"
prm1.SourceVersion = DataRowVersion.Original
Dim prm2 As OleDb.OleDbParameter = OleDbDataAdapter1.UpdateCommand.Parameters.Add("@ФИО", OleDb.OleDbType.Char, 50, "ФИО")
prm2.SourceVersion = DataRowVersion.Original
Dim prm3 As OleDb.OleDbParameter = OleDbDataAdapter1.UpdateCommand.Parameters.Add("@тел_дом", OleDb.OleDbType.Char, 50, "тел_дом")
prm3.SourceVersion = DataRowVersion.Original
End Sub
Слайд 21

Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)

Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button1.Click
‘кнопка ПЕРВАЯ запись. Нумерация записей функцией Session, начиная с нулевой (т.е. первой).
Session("таб_номер") = 0
MoveRow()
End Sub
Private Sub Button2_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
‘кнопка ПРЕДЫДУЩАЯ запись
If Session("таб_номер") > 0 Then
Session("таб_номер") -= 1
MoveRow()
End If
End Sub
Private Sub Button3_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
‘кнопка СЛЕДУЮЩАЯ запись
If Session("таб_номер") < DataSet11.Tables("сотрудники").Rows.Count - 1 Then
Session("таб_номер") += 1
MoveRow()
End If
End Sub
Слайд 22

Private Sub Button4_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)

Private Sub Button4_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button4.Click
‘кнопка ПОСЛЕДНЯЯ запись
Session("таб_номер") = DataSet11.Tables("сотрудники").Rows.Count - 1
MoveRow()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
‘кнопка СОХРАНИТЬ
'Point a datarow at the current row in the datatable
Dim MyRow As DataRow
MyRow = DataSet11.Tables("сотрудники").Rows(Session("таб_номер"))
'Populate the phone column value in the datarow with the phone text box value
MyRow(2) = TextBox3.Text
'Invoke the update method
Me.OleDbDataAdapter1.Update(DataSet11)
End Sub
Sub MoveRow()
'Выделенная строка
Dim MyRow As DataRow
MyRow = DataSet11.Tables("сотрудники").Rows(Session("таб_номер"))
' размещение в полях формы полей таблицы
TextBox1.Text = MyRow("таб_номер")
TextBox2.Text = MyRow("ФИО")
TextBox3.Text = MyRow("тел_дом")
End Sub