Приложения с базами данных

Содержание

Слайд 2

Скачать библиотеку можно здесь http://www.dll.ru/files/winmm-dll.html

Скачать библиотеку можно здесь
http://www.dll.ru/files/winmm-dll.html

Слайд 3

Подключаем библиотеку в Visual Studio.

Подключаем библиотеку в Visual Studio.

Слайд 4

Слайд 5

Публикация приложения

Публикация приложения

Слайд 6

Слайд 7

Слайд 8

Слайд 9

Приложения с базами данных Лекция 2

Приложения с базами данных

Лекция 2

Слайд 10

Привязка данных средствами Windows Forms класс Binding синхронизация между свойством элемента

Привязка данных средствами Windows Forms

класс Binding
синхронизация между свойством элемента управления и

свойством источника данных
класс BindingSource - > свойство DataSource
Слайд 11

Сложная привязка данных Сложная привязка (complex data binding) – это привязка

Сложная привязка данных

Сложная привязка (complex data binding) – это привязка списочного

источника данных целиком к элементу управления
Элемент управления DataGridView – отображает строки и столбцы данных в сетке, которые пользователь может изменить.
Элемент управления DataSet – представляет кэш данных в памяти
Элемент управления BindingSource – встраивает источник данных на форму и обеспечивает возможность навигации, фильтрации, сортировки и обновления.
Слайд 12

Слайд 13

Слайд 14

Слайд 15

Слайд 16

Слайд 17

Слайд 18

Создаем класс компилируем

Создаем класс
компилируем

Слайд 19

Слайд 20

Слайд 21

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

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

control-е.
Названия колонок источника отобразятся в заголовках колонок.
Если пользователь щелкнет по заголовку колонки, строки будут автоматически отсортированы.
Слайд 22

Слайд 23

Подключение к базе данных Microsoft Access Допустим у нас имеется некоторая

Подключение к базе данных Microsoft Access

Допустим у нас имеется некоторая база данных, созданная

в СУБД Microsoft Access. Файл базы данных имеет имя «db1.mdb».
Путь к файлу базы данных:
Е:\Programs\C_Sharp\WindowsFormsApplication1\db1.mdb
База данных имеет одну таблицу с именем «Tovar».
Слайд 24

Запустить MS Visual Studio. Создать приложение Windows Forms Application. Вызов мастера

Запустить MS Visual Studio. Создать приложение Windows Forms Application.
Вызов мастера подключения.
Для

доступа к файлу базы данных необходимо подключить его к приложению. Это осуществляется путем Вид-Другие окна-Источники данных-Добавить новый источник данных.

Порядок выполнения

Слайд 25

Слайд 26

Слайд 27

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

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

источнику данных которое изображено на рис. 2.
В окне необходимо выбрать один из четырех возможных вариантов подключения к источнику данных. В MSVS существует четыре типа подключения к источникам данных:
Database – подключение к базе данных и выбор объектов базы данных;
Service – открывает диалоговое окно Add ServiceReference позволяющее создать соединение с сервисом, который возвращает данные для вашей программы;
Object – позволяет выбрать объекты нашего приложения, которые в дальнейшем могут быть использованы для создания элементов управления (controls) с привязкой к данным;
Share Point – позволяет подключиться к сайту SharePoint и выбрать объекты для вашей программы.
В нашем случае выбираем элемент Database и продолжаем нажатием на кнопке Next.
Слайд 28

Слайд 29

Выбор модели подключения к базе данных. Следующий шаг – выбор модели

Выбор модели подключения к базе данных.
 Следующий шаг – выбор модели подключения

к базе данных (рис. 3).
Система предлагает выбор одного из двух вариантов:
– модели данных на основе набора данных (Dataset);
– модели данных Entity, что означает, что система может сгенерировать модель данных из базы данных которой могут выступать сервера баз данных Microsoft SQL Server, Microsoftt SQL Server Compact 3.5 илиMicrosoft SQL Server Database File, либо создать пустую модель как отправную точку для визуального проектирования концептуальной модели с помощью панели инструментов.
В нашем случае выбираем тип модели данных DataSet.
Слайд 30

Слайд 31

Задание соединения с БД. Следующим шагом мастера (рис. 4) есть выбор

Задание соединения с БД.
 Следующим шагом мастера (рис. 4) есть выбор соединения

данных которое должно использоваться приложением для соединения с базой данных. Для создания нового соединения необходимо выбрать кнопку «New Connection». 
Слайд 32

В результате откроется окно «Add Connection» (рис. 5) в котором нужно

 В результате откроется окно «Add Connection» (рис. 5) в котором нужно

добавить новое соединение Microsoft Access и выбрать маршрут к файлу базы данных.
В нашем случае поле «Data source» уже содержит нужный нам тип соединения «Microsoft Access Database File (OLE DB)».
Слайд 33

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

  Если нужно выбрать другую базу данных, то для этого используется

кнопка «Change…», которая открывает окно, изображенное на рисунке 6.
Слайд 34

В окне на рисунке 6 системой Microsoft Visual Studio будет предложено

В окне на рисунке 6 системой Microsoft Visual Studio будет предложено следующие виды

источников данных:
Microsoft Access Database File – база данных Microsoft Access;
Microsoft ODBC Data Source – доступ к базе данных с помощью программного интерфейса ODBC (Open Database Connectivity);
Microsoft SQL Server;
Microsoft SQL Server Compact 3.5;
Microsoft SQL Server Database File;
Oracle Database – база данных Oracle.
Слайд 35

Нажимаем кнопку «Browse…» и в открывшемся окне (рис. 7) «Add Connection»

Нажимаем кнопку «Browse…» и в открывшемся окне (рис. 7) «Add Connection»

выбираем маршрут к файлу базы данных «db1.mdb». Целесообразно размещать файл базы данных в каталоге содержащим исполняемый модуль приложения.
Для проверки правильности установленного соединения можно воспользоваться кнопкой «Test Connection».
Слайд 36

После нажатия на кнопке ОК система сгенерирует строку «Connection string» (рис.

После нажатия на кнопке ОК система сгенерирует строку «Connection string» (рис.

8) который в дальнейшем будет использован для программного подключения к базе данных.
  Кликаем на «Next» для продолжения работы мастера.
Слайд 37

Слайд 38

После выбора Next система выдаст информационное окно следующего вида (рис. 9).

После выбора Next система выдаст информационное окно следующего вида (рис. 9). Если выбрать

«Да», то файл базы данных «db1.mdb» будет копироваться в выходной каталог приложения каждый раз при его запуске в среде MS Visual Studio. Как правило, это каталог, содержащий основные модули приложения (например Program.cs , Form1.cs  и другие).
Слайд 39

Формирование конфигурационного файла приложения. После выбора кнопки «Next» мастера откроется следующее

Формирование конфигурационного файла приложения.
 После выбора кнопки «Next» мастера откроется следующее окно,

в котором предлагается сохранить строку соединения в конфигурационный файл приложения (рис. 10). Ничего не изменяем, оставляем все как есть (кликаем на Next).
Слайд 40

Выбор объектов базы данных для использования в программе. Последнее окно мастера

Выбор объектов базы данных для использования в программе.
 Последнее окно мастера (рисунок

11) предлагает выбрать список объектов (таблиц, запросов, макросов, форм и т.д.), которые будут использоваться в наборе данных. Как правило выбираем все таблицы базы данных. В нашем примере база данных содержит всего одну таблицу с именем Tovar.
  После выбора кнопки «Finish» заканчиваем работу с мастером подключения. Теперь база данных подключена к приложению и будет автоматически подключаться при его запуске или при его проектировании в MS Visual Studio.
Слайд 41

Слайд 42

Если выбрать панель Data Source (рисунок 12), то можно увидеть, как

Если выбрать панель Data Source (рисунок 12), то можно увидеть, как подключен набор

данных с именем db1Dataset в котором есть таблица с именем Tovar.

Что же изменилось в программе после выполнения мастера?

Слайд 43

Точно также можно увидеть изменения в панели Server Explorer (рисунок 13),

Точно также можно увидеть изменения в панели Server Explorer (рисунок 13), где появилась

база данных «db1.mdb» с таблицей Tovar и ее полями. Приложение может подключать не только одну, но и несколько баз данных.
Слайд 44

Подключение методов оперирования базой данных. Для того, чтобы использовать методы, которые

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

работать с базой данных MS Access , необходимо подключить пространство имен System.Data.OleDb.
Для этого в коде основной формы (Form1.cs) добавляем следующую строку:
На этом этапе подключение к базе данных db1.mdb выполнено. Дальнейшими шагами есть создание программного кода для оперирования данными в базе данных.

using System.Data.OleDb;

Слайд 45

Вывод таблицы базы данных Microsoft Access в компоненте dataGridView Пусть имеется

Вывод таблицы базы данных Microsoft Access в компоненте dataGridView

  Пусть имеется база данных,

созданная в приложении Microsoft Access. Имя файла базы данных “mydb.mdb”. Файл размещается на диске по следующему пути:
Путь к файлу базы данных:
C:\Programs\C_Sharp\WindowsFormsApplication1\mydb.mdb
База данных имеет несколько таблиц, одна из которых имеет название “Order”.
Задача состоит в том, чтобы с помощью средств языка C# осуществить подключение к базе данных и вывести таблицу с именем «Order» на форму.
Слайд 46

Чтение строки подключения Connection String. После подключения базы данных MS Access

Чтение строки подключения Connection String.
После подключения базы данных MS Access к нашему

приложению, мы получаем строку подключения Connection String, которую будем использовать в нашем приложении.
Чтобы получить корректную строку подключения к базе данных, нужно выделить базу данных в панели Server Explorer (mydb.mdb) и в окне “Properties” скопировать значение свойства “Connection String” (рис. 2, красное выделение). Следует учесть, что ‘\’ в строке на C# нужно заменить на ‘\\’ согласно синтаксису языка.
Слайд 47

Слайд 48

Размещение компонента типа dataGridView. Выносим на форму компонент dataGridView (рис. 3),

Размещение компонента типа dataGridView.
 Выносим на форму компонент dataGridView (рис. 3), представляющий компонент-таблицу, в которой

будет выведена наша таблица “Order” из базы данных. Получаем объект-переменную под названием dataGridView.
Слайд 49

Размещение компонента dataGridView на форме изображено на рисунке 4.

Размещение компонента dataGridView на форме изображено на рисунке 4.

Слайд 50

Добавление переменных SQL-запроса и строки подключения к базе данных. В программный

Добавление переменных SQL-запроса и строки подключения к базе данных.
В программный код Form1.cs

формы вводим дополнительные переменные CmdText и ConnString.
  Переменная CmdText будет содержать строку SQL-запроса для вывода всех записей таблицы “Order”.
Переменная ConnString представляет собой строку подключения к базе данных (см. п. 2). Общий вид программного кода класса формы следующий:
Слайд 51

Слайд 52

Подключение пространства имен OleDb. В Microsoft Visual Studio взаимодействие с файлом

Подключение пространства имен OleDb.
В Microsoft Visual Studio взаимодействие с файлом данных Microsoft Access осуществляется с помощью

поставщика данных OLE DB или ODBC. Поставщик данных OLE DB обеспечивает доступ к данным, находящимся в любом хранилище данных, если оно поддерживает классический протокол OLE DB на основе технологии COM. Этот поставщик состоит из типов, которые определены в пространстве имен System.Data.OleDb.
В последующих шагах мы будем использовать методы из этого пространства имен. Поэтому, вначале файла Form1.cs добавим:

using System.Data.OleDb;

Слайд 53

Создание объекта типа OleDbDataAdapter. В конструкторе формы после вызова. Добавляем строку

Создание объекта типа OleDbDataAdapter.
В конструкторе формы после вызова.
Добавляем строку создания объекта типа

OleDbDataAdapter:
Объект типа OleDbDataAdapter организовывает пересылку наборов данных с вызываемым процессом. Адаптеры данных содержат набор из четырех внутр. объектов команд: чтения, вставки, изменения и удаления информации.
конструктор содержит параметрами строку запроса на языке SQL (переменная CmdText) и строку подключения к базе данных (переменная ConnString). Таким образом, после выполнения данного кода, объект адаптера уже связан с нашей базой данных.
Слайд 54

Создание объекта набора данных DataSet. После создания адаптера данных (OleDbDataAdapter) создаем

Создание объекта набора данных DataSet.
После создания адаптера данных (OleDbDataAdapter) создаем объект типа DataSet (набор

данных):
Объект DataSet представляет собой буфер для хранения данных из базы. Этот буфер предназначен для хранения структурированной информации, представленной в виде таблиц, поэтому вложенным объектом DataSet является DataTable. Внутри одного объекта DataSet может храниться несколько загруженных таблиц из базы данных, помещенных в соответствующие объекты DataTable.
Слайд 55

Всякая таблица состоит из столбцов и строк. Для работы с ними

Всякая таблица состоит из столбцов и строк. Для работы с ними

предназначены специальные объекты - DataColumn и DataRow. Между таблицами могут быть связи - здесь они представлены объектом DataRelation. Наконец, в таблицах есть первичные и вторичные ключи - объект Constraint со своими двумя подклассами UniqueConstraint и ForeighKeyConstraint описывают их. 
 DataSet dsTours = new DataSet(); 
DataTable dtTours = dsTours.Tables.Add("Туры"); 
DataColumn dcPrice = dtTours.Columns.Add("Цена", typeof(Decimal));
DataColumn dcPriceNDS = dtTours.Columns.Add("Цена c НДС", typeof(Decimal));  dcPriceNDS.Expression = "Цена*0.15+Цена"; 
DataRow myRow = dtTours.NewRow(); 
myRow["Цена"] = 25000; 
dtTours.Rows.Add(myRow);
Слайд 56

Заполнение таблицы “Order” на основе SQL-запроса. Следующая команда – это заполнение

Заполнение таблицы “Order” на основе SQL-запроса.
Следующая команда – это заполнение набора данных

(переменная ds) значениями записей из базы данных на основе SQL-запроса, содержащегося в адаптере данных dA с помощью метода Fill():
Слайд 57

Визуализация данных в dataGridView1. На данный момент данные из таблицы “Order”

 Визуализация данных в dataGridView1.
На данный момент данные из таблицы “Order” считаны в объекте ds (типа DataSet), представляющем

собой набор данных.
Для их отображения необходимо чтобы свойство DataSource компонента dataGridView1 ссылалось на первую таблицу (в нашем случае одна таблица) набора данных ds. Программный код этой операции имеет следующую реализацию:
После этого данные из таблицы “Order” отобразятся на форме (рис. 5).

*****.Tables [“Order"]
*****.Tables [ 0 ]

Слайд 58

Слайд 59

Слайд 60

Общая схема взаимодействия между объектами.

Общая схема взаимодействия между объектами.

Слайд 61

Таким образом, можно выводить на форму любую таблицу базы данных. Условия

Таким образом, можно выводить на форму любую таблицу базы данных. Условия

выведения данных из базы данных задаются в строке SQL-запроса в переменной CmdText.
Слайд 62

Программное изменение определенной строки и программное удаление определенной строки

Программное изменение определенной строки и программное удаление определенной строки

Слайд 63

Вывод двух связанных таблиц данных в один элемент DataGridView В базе

Вывод двух связанных таблиц данных в один элемент DataGridView
В базе данных есть

таблица Туристы , которая связана с другими таблицами. Было бы удобно выводить эту таблицу в элемент DataGridView вместе с другими таблицами, а также выводить связанные записи этой таблицы.
Слайд 64

Слайд 65

Запускаем приложение. У каждой строки таблицы появился знак «+», говорящий о

Запускаем приложение. У каждой строки таблицы появился знак «+», говорящий о

том, что у данной записи имеются дочерние записи. Для перехода на дочернюю запись нажимаем на «+» и нажимаем на ссылку «Дополнительная информация». Окно приложения приобретает следующий вид. Для возвращения на родительскую запись нажимаем на кнопку со стрелкой.
Слайд 66

Вывод связанных таблиц данных в два элемента DataGridView Наиболее часто встречаемая

Вывод связанных таблиц данных в два элемента DataGridView
Наиболее часто встречаемая задача

при разработке приложений, связанных с базами данных, - это одновременный вывод двух таблиц на форму, причем при перемещении по записям главной таблицы в дочерней автоматически отображаются связанные записи.
Добавим на форму еще один компонент DataGridView, в котором будут отображаться связанные записи.
добавим следующий код:
Слайд 67

Изменить фамилию туриста с номером 3 CmdText = "UPDATE Туристы "

Изменить фамилию туриста с номером 3
CmdText = "UPDATE Туристы " +

"SET Фамилия = 'Сергеева' WHERE [Код туриста] = 3";
Вставить в таблицу Туристы новую строку
CmdText = "INSERT " +           "INTO Туристы ([Код туриста], Фамилия, Имя, Отчество) " +           "VALUES (6, 'Тихомиров', 'Андрей', 'Борисович')";

Запросы примеры

Слайд 68

Удалить туриста под номером 4 CmdText = "DELETE FROM Туристы WHERE

Удалить туриста под номером 4
CmdText = "DELETE FROM Туристы WHERE [Код

туриста] = 4";
Очистить всю таблицу Туристы
CmdText = "DELETE FROM Туристы";
Подсчитать количество строк в таблице Туры
CmdText = "SELECT COUNT (*) FROM Туры"; 
Найти максимальную цену тура
CmdText = "SELECT MAX (Цена) FROM Туры"; 
Найти минимальную цену тура
CmdText = "SELECT MIN (Цена) FROM Туры"; 
Найти среднее значение цен
CmdText = "SELECT AVG (Цена) FROM Туры"; 
Слайд 69

Ручное подключение к базе данных

Ручное подключение к базе данных

Слайд 70

Параметризированный запрос

Параметризированный запрос

Слайд 71

Изменение Update

Изменение Update

Слайд 72

Слайд 73

Вставка Insert

Вставка Insert

Слайд 74

Слайд 75

Удаление Delete

Удаление Delete

Слайд 76

Слайд 77

Слайд 78

Слайд 79

Слайд 80

Слайд 81