Разработка приложений по работе с базами данных в среде программирования Visual Studio С# — КиберПедия 

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Разработка приложений по работе с базами данных в среде программирования Visual Studio С#

2021-04-18 927
Разработка приложений по работе с базами данных в среде программирования Visual Studio С# 0.00 из 5.00 0 оценок
Заказать работу

Ю.А.Шичкина

В.С.Кедрин

Разработка приложений по работе с базами данных в среде программирования Visual Studio С#

Часть 1.

Базы данных на базе SQL server Compact 3.5

Учебное пособие

Братск 2011


УДК 681.3+681.5

 

 

Разработка приложений по работе с базами данных в среде программирования Visual Studio: Учебное пособие./ Ю.А.Шичкина. – Братск: ФГБОУ ВПО «БрГУ», 2011. – 157с.

 

 

В пособии рассматривается широкий круг вопросов, связанных с разработкой приложений для работы с базами данных на языке Visual C# в среде программирования Visual Studio. Пособие предназначено для студентов направлений подготовки «Математика и Информатика», «Прикладная математика и информатика», «Информационные системы», «Прикладная информатика в экономике», «Информационная безопасность».

 

 

Рецензенты:

 

д.физ.-мат.н, профессор, заведующий кафедрой Прикладной математики и информатики Санкт-Петербургского государственного архитектурно-строительного университета Б.Г.Вагер

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

 

Печатается по решению издательско-библиотечного совета

 


 

Содержание

Введение 5
1. Инструментарий среды Visual Studio 2008 по разработке приложений баз данных 7
1.1. Окно Источники данных 7
1.2. Окно Обозреватель баз данных 10
2. Создание локальной БД с помощью SQL Server Compact 3.5 и Visual Studio 11
2.1. Общие сведения о локальных данных 11
2.2. Добавление в проект базы данных SQL Server Compact 3.5 12
2.2.1. Создание новой базы данных SQL Server Compact 3.5 12
2.2.2. Добавление существующей базы данных в проект 15
2.3. Создание новых таблиц в базе данных 17
2.4. Создание столбца с автоматической генерацией значения 20
2.5. Создание ограничения ссылочной целостности между таблицами базы данных 21
2.6. Заполнение таблиц данными 22
2.7. Подключение к данным в приложениях Windows Forms 25
2.8. Отображение данных в элементе управления DataGridView в Windows Forms 30
2.8.1. Отображение данных одной таблицы 30
2.8.2. Отображение данных из нескольких связанных таблиц 31
2.8.3. Создание общей таблицы 36
2.8.4. Создание таблицы подстановок 41
2.8.5. Связывание элементов управления Windows Forms с компонентом BindingSource с помощью конструктора 45
2.8.6. Переход между строками с помощью элемента управления BindingNavigator 47
2.9. Поиск заданной строки в таблице 48
2.9.1. Поиск строки со значением первичного ключа 48
2.9.2. Поиск строк по значениям столбцов 50
2.9.3. Диалоговое окно Построитель условий поиска 51
2.10. Агрегирование 56
2.11. Вычисляемые поля 60
2.12. Модификация строк в наборах данных 64
2.12.1. Добавление строк в наборы данных 64
2.12.2. Получение определенных версий объекта DataRow 66
2.12.3. Редактирование строк в объекте DataTable 67
2.12.4. Удаление строк из объекта DataTable 69
2.12.5. Сохранение данных в источнике данных 71
2.12.6. Получение измененных записей 73
3. Дополнительные сведения по работе с базами данных в Visual Studio 74
3.1. Наборы данных в Visual Studio 74
3.2. Описание основных компонентов по работе с базами данных 78
Лабораторные работы 90
Список литературы 96
Приложение 97

Введение

Одной из базовых дисциплин в программе подготовки бакалавров по направлениям 010400 «Прикладная математика и информатика» и 090900 «Информационная безопасность» является курс «Базы данных», содержание которого определяется выпиской из федеральных государственных образовательных стандартов высшего профессионального образования (ФГОС ВПО) данных направлений.

Настоящее пособие затрагивает вопросы курса «Базы данных» в разделах проектирования реляционных баз данных (РБД), организации процессов обработки данных в РБД и проблем ограничения целостности данных на базе языка C#.

Изложение материала выделенных разделов построено на примерах использования системы классов ADO.NET для разработки приложений баз данных. Весь материал иллюстрируется примерами программ, написанных на языке С# под Windows на платформе.NET.

Целью данного учебного пособия является ознакомление студентов с современными технологиями проектирования и разработки приложений баз данных на языке С# под Windows на платформе.NET.

Задачами учебного пособия являются:

- раскрытие материала на простых и конкретных примерах использования библиотек классов в Windows-приложениях на основе платформы.NET и языка C#;

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

Пособие состоит из 4-х разделов.

Первый раздел посвящен возможностям среды Visual Studio 2008 по разработке приложений баз данных. В этом разделе приводится описание основных инструментов для разработки приложений с использованием мастеров, предоставляемых средой.

Во втором разделе рассматриваются способы создания локальной БД с помощью SQL Server Compact 3.5 и Visual Studio, подключения к БД на этапе разработки приложения, модификации структуры БД, обработки отдельных структурных единиц таблицы - строк и столбцов и отображения данных на форме. Все алгоритмы по работе с БД сопровождаются примерами на основе учебной БД «Сотрудники» (Sotrudnics), состоящей из двух таблиц «Персональные данные» (Persons) и «Данные о работе» (Worker). Все примеры с свою очередь проиллюстрированы скриншотами.

Третий раздел содержит дополнительную информацию о компонентах среды Visual Studio 2008, необходимых для разработки БД и проектирования приложения по работе с данными с современным интерфейсом и требованиями к функциональным возможностям и техническим характеристикам приложения.

Для успешного изучения материала необходимы знания теории управления данными, баз данных, языка SQL, основ структурного и объектно-ориентированного программирования и желательны начальные навыки программирования на языке C#.

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

Для проверки степени усвоения материала необходимо выполнить лабораторные работы, приведенные в конце пособия.


Окно Источники данных

В окне Источники данных отображаются источники данных в проекте. Окно Источники данных можно использовать для создания интерфейса пользователя путем перетаскивания элементов из окна на форму в проекте. Каждый элемент имеет раскрывающийся список элементов управления (рис.1.1), в котором можно выбрать тип создаваемого элемента управления до перетаскивания его на форму. Список элементов управления можно дополнять элементами, включая вновь созданные.

 

Рисунок 1.1. – Окно Источники данных

С помощью окна Источники данных пользователь может выполнять следующие действия:

· Создавать формы, отображающие данные, путем перетаскивания элементов из окна Источники данных на форму.

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

· Настраивать список элементов управления, доступных для каждого типа данных в окне Источники данных.

· Выбирать, какой элемент управления должен создаваться при перетаскивании элемента в форму в приложении Windows.

· Создавать и добавлять новые источники данных в проект.

· Открывать наборы данных для редактирования в Конструкторе наборов данных.

Открытие окна источников данных

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

Заполнение окна источников данных

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

Чтобы добавить новый источник данных с помощью мастера Мастер конфигурации источников данных, выберите команду Добавить новый источник данных в меню Данные

или щелкните ссылку Добавить новый источник данных в окне Источники данных.

Команды, доступные в окне источников данных

При щелчке правой кнопкой мыши на окне Источники данных доступны следующие команды (рис.1.2):

· Добавление нового источника данных

Открывает мастер Мастер конфигурации источников данных, используемый при создании нового источника данных в проекте.

· Изменение набора данных при помощи конструктора

Открывает выбранный набор данных в Конструкторе набора данных.

· Настройка набора данных при помощи мастера

Открывает мастер Мастер конфигурации источников данных, заполненный информацией из выбранного источника данных.

· Обновить

Синхронизирует окно Источники данных с источниками данных в проекте.

Рисунок 1.2 – Команды контекстного меню окна Источники данных

Открытие окна Обозреватель баз данных

Чтобы вызвать окно Обозреватель баз данных, выберите в меню Вид команды Другие окна, Обозреватель баз данных.

В результате слева появится окно обозревателя баз данных:

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

В окне есть один основной узел: Подключения данных, в котором представлены все подключения к данным, добавленные пользователем в приложение. В этом узле представлены диаграммы, таблицы, представления, хранимые процедуры и функции каждого подключения к данным. Подключения к данным могут создаваться для баз данных многих типов, в том числе для баз данных Oracle, работающих под управлением ОС UNIX или Microsoft Windows.

Перетаскивание данных

Элементы окна Обозреватель баз данных можно перетаскивать в область конструкторов Visual Studio. При этом создаются новые ресурсы, заранее настроенные так, чтобы получать информацию из выбранного ресурса.

 

Заполнение таблиц данными

Чтобы заполнить данными таблицу

1. Разверните узел базы данных (Sotrudnics) в окне Обозреватель баз данных.

2. В контекстном меню к таблице которую необходимо заполнить данными (Person), выберите команду Показать данные таблицы.

Результат. В рабочей области будет открыта вкладка Имя_таблицы: Запрос…Имя_БД.sdf.

3. Заполните поля таблицы значениями.

Примечание. В следующей таблице приведены символы, встречаемые при заполнении таблицы данными.

Символ Описание
1. Редактируемая строка. Строка будет автоматически сохранена в таблице, после перехода на другую строку.
2. Текущая просматриваемая строка.
3. Новая строка. При переводе курсора в эту строку, появится новая строка ниже и данный символ будет переставлен в нее. Этот символ всегда стоит в последней строке.
4. Несохраненное значение. Данный символ появляется сразу после изменения данных в ячейке и исчезает, если: · значение в ячейке стало таким же, каким было до редактирования; или · был осуществлен переход на другую строку.

Внимание.

· При открытии вкладки редактирования таблицы в рабочей области программы добавляется панель инструментов Конструктор запросов:

· Вдоль нижней границы вкладки появляется навигатор по записям:

 

Чтобы удалить последнюю редактируемую строку нажмите клавишу Escape.

Чтобы удалить строку в таблице:

1. Выделите строку, щелкнув по символу   .

2. В контекстном меню к выделенной строке выберите команду Удалить:

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

Например. Удаление значения «администратор»:

Внимание. При случайном удалении значения кнопка на Стандартной панели инструментов  не отменяет удаление. Отменить последнее действие можно с помощью сочетания клавиш: Ctrl+Z.

Внимание. Если значение введено неверно, например, тип значения не совпадает с типом поля, то переход к следующей ячейке будет блокирован сообщением об ошибке. Перейти на другую ячейку таблицы станет возможно только после исправления ошибки, удаления строки, отмены последнего действия (Escape или Ctrl+Z).

 

Создание подключений

Подключения данных автоматически настраиваются при выполнении одного из следующих действий:

Действие Описание
Запуск Мастера настройки источника данных. Подключения настраиваются при выборе пути к базе данных в Мастере настройки источника данных.
Запуск Мастера настройки адаптера таблицы. Подключения создаются в Мастере конфигурации адаптера таблицы.
Запуск Мастера настройки запроса TableAdapter. Подключения создаются в Мастере конфигурации запросов к адаптеру таблиц.
Перетаскивание элементов из окна Источники данных на форму конструктор компонентов. Объекты подключения создаются при перетаскивании элементов из окна Источники данных в Windows Forms Designer или Конструктор компонентов.
Добавление новых подключений к данным в окне Обозреватель баз данных. Подключения к данным в Обозревателе серверов/Обозревателе баз данных отображаются в списке доступных подключений в мастерах данных..

Строки подключения

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

Примечание. Хранение подробных данных строки подключения (таких как пароль) может угрожать безопасности вашего приложения.

Результаты:

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

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

Пример:

Узел дочерней таблицы — это узел, отображающийся как расширяемый дочерний узел в родительской таблице.

Внимание. Перетаскивание элементов из окна Источники данных в форму автоматически добавляет нужный код для заполнения набора данных в обработчик событий Load для формы, на которой размещены данные.

Метод Fill() объекта TableAdapter заполняет набор данных данными, пример:

private void Form1_Load(object sender, EventArgs e) { this.personTableAdapter1.Fill(this.SotrudnicDataSet11.person); }

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

 

Создание общей таблицы

В окне Источник данных в контекстном меню к верхнему узлу источника данных выберите команду Изменить набор данных в конструкторе:

В результате откроется окно Контсруктор данных. В контекстном меню к рабочей области окна Конструктор данных выберите команды Добавить, TableAdapter:

В результате откроется окно Мастер подключения адаптера таблицы и нажмите кнопку Далее:

В следующем окне включите перключатель Использовать инструкцию SQLи нажмите кнопкуДалее:

В следующем окне нажмите кнопку Построитель запросов

В результате откроется окно Построитель запросов:

С помощью кнопки Добавить добавьте две таблицы в окно Построитель запросов и нажмите Закрыть в окне Добавление таблицы.

В результате обе таблицы появятся в поле Построителя запросов. Выберите в таблицах поля, необходимые для отображения в общей таблице:

Нажмите кнопку Выполнить запрос:

Если в таблице отобразились необходимые данные, то нажмите OK.

Далее, отключите опцию Вернуть таблицу данных:

Нажмите кнопку Далее:

В появившемся окне нажмите кнопку Готово. В источнике данных появился новый объект: DateTable1. В конструкторе данных с помощью контекстного меню к DateTable1 выберите команду Переименовать и введите имя общей таблицы.

Результат: Будет создано новое отношение, содержащее поля из обеих таблиц и метод, позволяющий заносить в эти поля данные из обеих таблиц по принципу естественного соединения

Добавьте таблицу на форму.

 

Внимание.

Вместо команды:

rps = sotrudnicDataSet1.person.Select("fio Like '" + textBox2.Text + "%'");

можно применить команду:

rps=sotrudnicDataSet1.Tables["person"].Select("fio Like '" + textBox2.Text + "%'");

 

Изменение запроса

Изменить созданный запрос можно одним из следующих способов:

· В меню «Задачи» к Адаптеру таблицы, например, personTableAdapter, выбрав команду «Изменить запросы в конструкторе наборов данных…»

· В контекстном меню к таблице выбрав команду «Настроить…»

Поиск по неполному значению

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

«Where поле like @переменная»

 

Сортировка

Для сортировки данных в таблице по одному определенному полю следует применять команду:

Источник. Таблица = " поле направление ";

например,

if (comboBox1.Text=="фамилия") personBindingSource.person="fio Desc";

Для указания направления сортировки применяют ключевые слова: Desc – сортировка по убыванию, Asc – сортировка по возрастанию.

 

Агрегирование

Для применения к полям таблицы функций агрегирования и отображения результатов этих функций на форме, необходимо:

1. Открыть конструктор данных, например, выбрав в контекстном меню к БД в окне Источники данных команду Изменить набор данных в конструкторе:

2. Если таблица запросов (DataTable) отсутствует, то создать ее. В нашем примере это таблица All.

3. Через контекстное меню к таблице запросов выбрать команды Добавить, Запрос…

  1. В следующем окне нажать кнопку Далее:

 

5. В следующем окне выбрать команду «Инструкция Select, возвращающая одиночное значение» и нажать кнопку Далее

6. В следующем окне нажать кнопку «Построитель запросов»

7. В следующем окне необходимо прописать запрос SQL, например:

Select функция(поле) AS имя_результата

From таблица

Замечание. Все поля должны быть выключены.

8. Для проверки созданного запроса можно нажать кнопку «Выполнить запрос». Если ошибки отсутствуют, то в появившемся окне проверки запроса следует нажать кнопку «ОК», а в окне Построитель запросов – кнопку «Далее».

9. В окне Выбор имени функции следует ввести имя для новой функции агрегирования и нажать кнопку «Далее».

  1. Убедиться в правильности действий, «Готово»

  1. Вызвать метод на форме, например:

label8.Text = this.allTableAdapter.Avg_sal().ToString();

Пример:

Замечания.

1) Если запрос должен возвращать больше одного значения, то на шаге пятом следует выбрать команду «Запрос Select, возвращающий строки»

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

Select функция(поле) As название результата

From таблица

Where поле=@перем

При этом изменится вызов

label4.Text =this.Адаптер.Avg_sal(значение).ToString();

 

Вычисляемые поля

Таблица данных в наборе данных может содержать столбцы, значения которых вычисляются, а не считываются из базы данных. Например, в записи, содержащей подробные сведения о сотрудниках, часто имеет смысл определять зарплату с надбавками путем умножения исходной зарплату на некоторый коэффициент. Определять вычисляемые столбцы можно с помощью выражений.

Синтаксис выражения состоит из стандартных операторов. К значениям данных можно обращаться по имени соответствующего столбца (как это делается в инструкциях SQL), а также включать в выражения функции агрегирования, такие как count, avg, sum и др.

Например, выражение для столбца salary, который отображает значение зарплаты, умноженное на коэффициент k, может быть следующим:

s alary* k

Для обращения к столбцам дочерних таблиц можно использовать зарезервированное слово Child, после которого указывается имя столбца. Например, следующее выражение возвращает среднее значение столбца salary во всех связанных дочерних записях:

Avg(Child.salary)

Для создания выражений для столбцов в Конструкторе наборов данных:

1. Откройте таблицу в Конструкторе наборов данных.

2. В требуемой таблице данных выберите столбец, в который требуется добавить выражение, или добавьте к таблице новый столбец.

3. В окне Свойства введите выражение в свойстве Expression.

Для создания выражений для столбцов в компоненте DataGridView:

1. Создайте в DataGridView новый столбец. Для этого в окне Задачи для объекта DataGridView выберите команду Добавить столбец.

2. В появившемся окне Добавить столбец введите Имя столбца и Текст заголовка. Нажмите кнопку Добавить, а затем Закрыь.

Результат:

3. Настройте свойства нового поля. Для этого в окне Задачи для объекта DataGridView выберите команду Правка столбцов.

4. В появившемся окне Правка столбцов установите свойство: DataPtopertyName = (нет) – новый столбец не должен быть привязан ни к какому полю

5. Установите другие необходимые свойства, например, ширину столбца и т.д. и нажмите ОК.

6. В функции обработки события создания вычисляемого поля пропишите код, аналогичный следующему:

private void button1_Click(object sender, EventArgs e)

   {

//Создание нового столбца с указанием названия и типа данных

DataColumn col = new DataColumn(" имя ",typeof(тип));

// Добавление столбца в существующую таблицу

Имя_БД.имя_таблицы. Columns. Add (col);

// заполнение столбца значениями

for (int i = 0; i < Имя_БД.имя_таблицы. Count; i ++) {

     Convert. ToInt 16(Имя_БД.имя_таблицы.[ i ]["имя"])= значениеж

       }

//Отображение столбца в DataGridView

DataGridView. Columns [№1]. DataPropertyName = bDDataSet. DataTable 1. Columns [№2]. ToString (); }

где №1 – номер вычисляемого поля в таблице на форме; №2 – номер нового поля в таблице БД.
Пример.

private void Form4_Shown(object sender, EventArgs e)

{

//Создание нового столбца с указанием названия и типа данных

DataColumn col = new DataColumn("Calc", typeof(double));

// Добавление столбца в существующую таблицу

sotrudnicDataSet1.All.Columns.Add(col);

// Заполнение столбца значениями

for (int i = 0; i < sotrudnicDataSet1.All.Count; i++)

{if (Convert.ToInt16(sotrudnicDataSet1.All[i]["salary"]) < 2000)

{

sotrudnicDataSet1.All[i]["Calc"] =

       (Convert.ToDouble(sotrudnicDataSet1.All[i]["salary"]) * 1.2);

}

else

{

sotrudnicDataSet1.All[i]["Calc"] =

Convert.ToDouble(sotrudnicDataSet1.All[i]["salary"]);

 }

}

// Отображение столбца в DataTableGridView

allDataGridView.Columns[6].DataPropertyName =

                                 sotrudnicDataSet1.All.Columns[6].ToString();

}

Результат:

Примечания.

- Если ключ составной, а поиск идет по одному полю, то в качестве поисковой функции используется:

имя_БД.имя_таблицы.Select("поле=значение");

- Если ключ составной и поиск ведется по всем полям ключа, то в поисковой функции FindBy прописываются несколько значений через запятую

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

Пример. Необходимо, чтобы в режиме редактирования при переходе с записи на запись в таблице текущая запись появлялась в панели редактирования:

Для этого действия в обработчики щелчка мыши по таблице необходимо прописать код:

private void allDataGridView_Click(object sender, EventArgs e)

   {

       DataGridViewRow dr = allDataGridView.CurrentRow;

       textBox2.Text = dr.Cells[1].Value.ToString();

       textBox1.Text = dr.Cells[0].Value.ToString();

       textBox4.Text = dr.Cells[3].Value.ToString();

       textBox3.Text = dr.Cells[2].Value.ToString();

       textBox5.Text = dr.Cells[4].Value.ToString();

       textBox6.Text = dr.Cells[5].Value.ToString();

   }

Для обновления записи без проверки какие именно поля были обновлены можно прописать код:

private void button1_Click(object sender, EventArgs e)

   {

          SotrudnicDataSet1.personRow rp = sotrudnicDataSet1.person.FindBypasport(Convert.ToInt32(textBox2.Text));

           rp["pol"] = textBox4.Text;

           rp["fio"] = textBox1.Text;

           rp["data"] = Convert.ToDateTime(textBox3.Text);

           SotrudnicDataSet1.workerRow rw = sotrudnicDataSet1.worker.FindBypasportwork(Convert.ToInt32(textBox2.Text), allDataGridView.CurrentRow.Cells[4].Value.ToString());

           if (rw["work"]!= allDataGridView.CurrentRow.Cells[4].Value.ToString()) rw["work"] = textBox5.Text;

           rw["salary"] = Convert.ToInt32(textBox6.Text);

           if (MessageBox.Show("Была фамилия: " + sotrudnicDataSet1.person[0]

       ["fio", DataRowVersion.Original].ToString() + " Новая фамилия: " + sotrudnicDataSet1.person[0]

       ["fio", DataRowVersion.Current].ToString(), "Внимание", MessageBoxButtons.OKCancel) == DialogResult.OK)

           {

               this.Validate();

               this.personBindingSource.EndEdit();

               this.workerBindingSource.EndEdit();

               this.tableAdapterManager.UpdateAll(this.sotrudnicDataSet1);

               allTableAdapter.Fill(this.sotrudnicDataSet1.All);

           };

       }

Заполнение набора данных

По умолчанию набор данных не содержит данных. Заполнение набора данных фактически означает загрузку данных в отдельные объекты DataTable, составляющие набор данных. Таблицы данных заполняются путем выполнения запросов адаптера таблиц. При заполнении набора данных возникают различные события, проверяются ограничения, и т.д.

Код для заполнения набора данных автоматически добавляется в обработчик событий загрузки формы при перетаскивании элементов из окна Источники данных на форму в приложении Windows:

this. Адаптер.Fill(this. БД. Таблица);

например:

this.personTableAdapter.Fill(this.sotrudnicDataSet1.person);

 

Заполнять наборы данных можно различными способами:

· Если набор данных создан с использованием средств проектирования, например с помощью мастера данных, то следует вызвать метод Fill адаптера таблиц.

· Вручную таблицы набора данных можно заполнить, создавая объекты DataRow и добавляя их в коллекцию таблицы DataRowCollection. Это можно делать только во время выполнения программы; во время разработки задавать элементы коллекции DataRowCollection нельзя.

· Считывание XML-документа или потока в набор данных.

· Копирование содержимого одной таблицы DataTable в другую.

 

Ограничения

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

· Уникальное ограничение: новые значения в столбце должны быть уникальными в пределах таблицы.

· Ограничение внешнего ключа, которое определяет правила обновления дочерних записей в связанной таблице при обновлении или удалении соответствующих записей в основной таблице. Например, ограничение внешнего ключа проверяет существование родительской записи перед разрешением на создание любых дочерних записей.

В Visual Studio ограничения создаются неявно при определении набора данных. При добавлении к набору данных первичного ключа неявно создается ограничение уникальности для столбца первичного ключа. Можно указать уникальное ограничение для других столбцов, установив их свойство Unique в true.

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

Таблица данных на форме DataGridView

Элемент управления DataGridView предоставляет мощный и гибкий способ отображения данных в табличном формате.

Компонент TableAdapters

Адаптеры таблиц (TableAdapters) обеспечивают связь между приложением и базой данных. Адаптер таблиц подключается к базе данных, выполняет запросы или хранимые процедуры и либо возвращает новую заполненную таблицу данных, либо заполняет существующую таблицу (DataTable) возвращаемыми данными. Адаптеры таблиц также используются для отправки обновленных данных из приложения обратно в базу данных. Как правило, адаптеры таблиц содержат методы Fill и Update для извлечения и обновления данных в базе данных. Можно создавать адаптеры таблиц:- во время создания нового набора данных в мастере настройки источника данных;- в существующих наборах данных при помощи мастера настройки адаптера таблицы; - путем перетаскивания объектов базы данных из окна Обозреватель баз данных в Конструктор наборов данных. При создании TableAdapter начальный запрос или сохраненная процедура используются для определения схемы адаптера, связанного с DataTable. Этот начальный запрос или сохраненная процедура выполняются путем вызова основного метода адаптера таблицы Fill (который заполняет связанную с адаптером DataTable). Любые изменения, внесенные в основной запрос адаптера TableAdapter, отражаются в схеме связанной таблицы данных.

Запросы адаптера таблиц

Пользователь может определить столько запросов для TableAdapter, сколько требуется для приложения. При этом каждый запрос возвращает данные, которые соответствуют той же схеме, что и связанная таблица данных. Это позволяет загружать данные, которые удовлетворяют различным критериям. Например, если приложение содержит таблицу сотрудников, то можно создать запрос, заполняющий таблицу сотрудников, чье имя начинается с определенных букв, и другой запрос, отбирающий всех сотрудников, проживающих на одной улице. В дополнение к запросам, возвращающим данные из одной и той же схемы, можно добавить запросы, возвращающие скалярные (одиночные) значения. Например, созданный запрос, возвращающий число сотрудников: SELECT Count(*) From person является допустимым для personTableAdapter, даже если возвращаемые данные не соответствует схеме таблицы.

Компонент DataTable

Представляет одну таблицу с данными в памяти. Если объект DataTable создается программно, необходимо сначала определить его схему, добавив объекты DataColumn в коллекцию DataColumnCollection (доступна через свойство Columns). Чтобы добавить строки в объект DataTable, необходимо сначала вернуть новый объект DataRow с помощью метода NewRow. Метод NewRow возвращает строку со схемой объекта DataTable, согласно тому, как она определена в коллекции DataColumnCollection таблицы. Максимальное количество строк, которое может храниться в объекте DataTable, равно 16 777 216.

 

Для добавления новой таблицы данных в набор данных:

1. Перетащите DataTable из вкладки Набор данныхПанели элементов в Конструктор наборов данных.

К набору данных будет добавлена таблица с именем DataTable1.

2. Щелкните полосу заголовка DataTable1 и переименуйте новый компонент.

 

Для добавления столбцов в таблицу данных:

1. Щелкните правой кнопкой мыши по таблице DataTable1. В открывшемся контекстном меню выберите Добавить, а затем щелкните Столбец.

2. Назовите столбец.

3. В окне Свойства присвойте свойству DataType значение типа.

4. Повторите эти действия, чтобы добавить следующие столбцы:

Для задания первичного ключа таблицы щелкните правой кнопкой мыши по столбцу первичного ключа и щелкните по пункту Задать первичный ключ. Значок ключа появится рядом с выбранным столбцом.

 

Методы DataTable

Ниже перечислены часто используемые методы класса DataTable:
Член Описание
Метод NewRow Создает новый класс DataRow, имеющий ту же схему, что и таблица.
Метод AcceptChanges Фиксирует все изменения, внесенные в таблицу после последнего вызова метода AcceptChanges. При вызове метода AcceptChanges успешно завершается изменение объектов DataRow, находящихся в режиме изменения. Свойство DataRowState также изменяется: все строки Added и Modified становятся Unchanged, а строки Deleted удаляются.
Метод Load Это перегруженный метод, который в своей простейшей форме имеет единственный параметр, DataReader. В этой форме он просто загружает строки в таблицу DataTable.
Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

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

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.