Лабораторная работа № 9 Создание полноценных таблиц. Работа с объектом DataTable

advertisement
-1–
Лабораторная работа № 9
Создание полноценных таблиц. Работа с объектом
DataTable
1. ЦЕЛЬ РАБОТЫ
Целью работы является изучение и освоение главных свойств класса DataTable, а
также применение их на практике для создания в оперативной памяти моделей табличных
наборов данных.
2. СОСТАВ РАБОЧЕГО МЕСТА
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, интегрированная
оболочка Visual Studio 2005 с установленным компонентом Visual C#.
3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Тип DataTable
Класс DataTable используется для создания в оперативной памяти моделей
табличных наборов данных. Мы можем создавать объекты DataTabl e программным
образом, однако чаще в приложениях объект DataTable создается автоматически с
помощью возможностей OataSet и типов, определенных в пространствах имен System.
Data.01eOb и System.Data.SqlClient. Наиболее важные свойства DataTable представлены в
табл.
Свойства класса DataTable
Свойство
Описание
CaseSensitive
Определяет, будет ли при сравнении символьных данных в таблице учитываться регистр
символов. По умолчанию — false (не будет)
Child Relations
Возвращает коллекцию подчиненных отношений (DataRelationCollection) для объекта DataTable
(если такие отношения есть)
Columns
Возвращает набор столбцов для таблицы
Constraints
Позволяет получить коллекцию ограничений, определенных в таблице (ConstraintCollection)
DataSet
Позволяет получить ссылку на объект DataSet, к которому принадлежит данная таблица (если
такой объект есть)
DefauftView
Позволяет получить настроенное представление для таблицы, которое может включать в себя,
например, только некоторые выбранные пользователем столбцы или данные о положении
курсора
MinimumCapacity
Позволяет получить или установить исходное количество строк в таблице (по умолчанию
используется значение 25)
ParentRelations
Позволяет получить коллекцию родительских отношений для данного объекта DataTable
PrimaryKey
Позволяет получить или установить массив столбцов, которые являются первичным ключом в
таблице
Rows
Возвращает набор строк, относящихся к таблице
TableName
Позволяет получить имя таблицы или определить его. Значение для этого свойства может быть
установлено через конструктор для таблицы
-2–
Создаем объект DataTable
Теперь, когда мы познакомились с классом DataTable, следующая наша задача —
создать полный объект DataTabl e и продемонстрировать возможности работы с этим
объектом. Предположим, что наша цель — создать объект DataTable, представляющий
список автомобилей в базе данных Cars. В нашей таблице Inventory будет четыре столбца:
CarlD (идентификатор автомобиля), Make (модель), Color (цвет) и PetName (прозвище).
Столбец CarlD будет столбцом счетчика (то есть значения в нем будут увеличиваться
автоматически), и, кроме того, он будет первичным ключом таблицы. Столбец PetName
будет допускать значения типа NULL.
CarlD
(РК)
Make
Color
PetName
0
BMW
Green
Chucky
1
Yugo
White
Tiny
2
Jeep
Tan
(null)
3
Caravan
Pink
Pain Inducer
Первое, что нужно сделать, — создать объект DataTable. Очень удобно указать
дружественное имя таблицы в качестве параметра конструктора. Это дружественное имя
затем можно будет использовать, например, при обращении к нашей таблице из DataSet.
Код для создания объекта DataTable в нашем случае будет выглядеть так:
// Создаем объект DataTable
DataTable inventoryTable = new DataTable("Inventory"):
Наша следующая задача — программным образом произвести добавление
необходимых столбцов в коллекцию DataColumnCollection при помощи метода Add ( )
.Нам нужно будет добавить четыре столбца: CarlD.Make.Color и PetName (тип данных для
каждого столбца определяется при помощи свойства DataColumn. DataType)
Перед тем как приступить к добавлению строк, нам еще потребуется указать
первичный ключ для таблицы. Для этого положено использовать свойство
DataTable.PrlmaryKey. Первичный ключ может включать в себя несколько столбцов
(композитный первичный ключ), поэтому это свойство в качестве параметра принимает
массив объектов DataColumn. В нашей таблице роль первичного ключа будет выполнять
единственный столбец СагID
Удаление строки из таблицы
Если нам потребуется удалить из таблицы одну или несколько строк, мы можем
сделать это несколькими способами. Первый способ — воспользоваться мегодом Delete().
При этом нам придется указать порядковый номер удаляемой строки.
Метод Del ete() можно было бы, наверное, назвать MarkedAsDeletable(), поскольку
при его вызове реального удаления строки не происходит. Вместо этого столбец лишь
помечается как подлежащий удалению, а само удаление происходит при вызове метода
DataTable. AcceptChanges(). Пока AcceptChanges() не вызван, мы можем даже
восстановить удаленную строку
Применение фильтров и порядка сортировки для DataTable
Очень часто возникает необходимость получить подборку данных таблицы,
основываясь на каком-либо критерии отбора (фильтре). Например, предположим, что в
нашей таблице нам потребовалось извлечь только строки, относящиеся к автомобилям
-3–
определенной модели (фильтр по значению столбца Make). В этой ситуации мы можем
использовать метод DataTable.Sel ect {).
Для метода Select () предусмотрено множество перегруженных вариантов. Чаще
всего методу Select () передается параметр, который представляет условие для отбора
строк.
Внесение изменений в строки
Последний очень важный вопрос, который мы должны прояснить, — а как можно
вносить изменения в уже существующие строки в объекте DataTable? Наиболее простой
способ — вначале воспользоваться тем же методом Select (), чтобы отобрать
интересующие нас строки, а затем внести изменения в те объекты DataRow, которые
вернет нам этот метод. Например, предположим, что в нашем приложении появилась еще
одна кнопка, по нажатии на которую все значения BMW в столбце Make должны быть
заменены на Colt. Код обработчика события Click для этой
кнопки может выглядеть следующим образом:
// Находим все строки, которые нужно отредактировать, при помощи запроса
protected void btnChange_Click (object sender. System.EventArgs e)
{
// Создаем фильтр для отбора строк
string filterStr - "Make-'BMW";
string strMake = null;
// Получаем все строки, соответствующие условию
DataRow[] makes - InventoryTable.Select(filterStr):
// Заменяем отобранных строках значения в столбце Make на "Colt"
for(int i = 0: i < makes.Length: i++)
{
DataRow temp = makes[i];
strMake += temp["Make"] - "Colt":
makes[i] = temp;
}
}
Тип DataView
В мире баз данных представление (view) ~- это специальным образом настроенное
отображение данных из таблицы (или нескольких таблиц). Например, мы можем создать
представление на основе нашей таблицы Inventory, которое будет отображать только
автомобили определенного цвета. В ADO.NET представления (объекты DataVi ew)
позволяют программным образом получать выборку данных на основе базовой таблицы
(объекта DataTable). Для одной и той же таблицы мы можем создать неограниченное
число представлений. Создание нескольких представлений для одной таблицы может
потребоваться, например, если мы планируем использовать эти представления в разных
элементах управления (например, если у нас на форме размещено несколько элементов
управления DataGrid). Например, первый DataGrid может быть привязан к объекту
DataView, который позволяет получить строки для всех автонобилей в таблице, второй
DataGrid работает через DataView, выводящий информацию только о зеленых
автомобилях и т. п. В классе DataTable предусмотрено свойство DefaultView, при помощи
которого можно получить представление по умолчанию для данной таблицы.В классе
DataView предусмотрено свойство RowFiIter, для которого используется текстовая строка
с критериями отбора объектов DataRow. После того как объекты DataView полностью
сконфигурированы, мы просто указываем их в качестве источника данных для элемента
управления DataGrid (через свойство DataSource). Элементы управления DataGrid умеют
отслеживать изменения, которые вносятся в источник данных для них. Поэтому если мы
-4–
заменим в DataTable все BMW на Colt, то значения в DataGrid автоматически изменятся,
отобразив эти перемены. Некоторые наиболее важные члены класса DataView
представлены в табл.
Члены класса DataView
Член
Назначение
AddNew()
Добавляет новую строку через DataView
AllowDelete
AllowEdit
AtlowNew
Позволяют настроить возможность проведения через DataView операций no удалению,
редактированию и добавлению новых строк в таблицу
Delete()
Позволяет удалить существующую строку через DataView (необходимо указать ее порядковый
номер)
RowFilter
Позволяет получить или установить выражение, используемое для фильтрации строк,
отображаемых через DataView
Sort
Позволяет настроить порядок сортировки строк в DataView
Table
Позволяет получить или указать базовую таблицу для DataTable
Возможности DataGrid
С# включает такой мощный инструмент для отображения данных, как элемент
управления DataGrid. DataGrid может применяться как для разработки Windows Forms
приложений, так и для разработки Web-приложений. Нет никакой разницы в написании
кода. Если вы имеете опыт работы с Windows, то должны хорошо представлять, что такое
DataGrid. Этот элемент управления сочетает в себе все возможности таблицы Excel, и
даже больше.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Порядок выполнения работы:
1. Составить программу для .... по одному из вариантов, приведенных в
следующей таблице. Вводимые значения и результаты вывести на экран дисплея.
№ варианта Описание действия программы
1
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. Первый столбец – порядковый номер. Поместить в приложении
используя фильтр кнопку, которая выведет в окне сообщений все строки
после 3-й.
2
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. Поместить в окне приложения кнопку, которая будет удалять
строку, номер которой необходимо ввести.
3
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. В одном из столбцов назвать 3 элемента одинаково. Пометить
кнопку, которая будет выводить в окне сообщений строки с одинаковым
элементом.
4
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. Расположить в окне кнопку, которая будет выводить элементы
заданного столбца в алфавитном порядке в окне сообщения.
5
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. Один из столбцов сделать числовым. Поместить в окне
приложения кнопку, которая будет выводить в окне сообщений строки
соответствующие числовому столбцу в убывающем порядке.
6
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. В одном из столбцов назвать 3 элемента одинаково. Поместить в
окне приложения кнопку, при нажатии на которую имена этих элементов
-5–
7
8
9
10
будут заменены на другие.
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. В окне приложения отобразить главную таблицу и 2
подтаблицы, в которых вывести строки главной таблицы по 2-м разным
критериям.
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. Поместить в окне приложения кнопку, которая будет удалять
строки содержащие определённый символьный элемент.
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. Поместить в окне приложения кнопку, которая выведет в
алфавитном порядке(для символьных элементов) и в порядке
возрастания(для числовых) элементы всех столбцов в разных окнах
сообщений.
Создать графическое приложение в виде таблицы. Количество строк не
меньше 5. В окне приложения поместить кнопку, которая будет удалять
строки по заданному критерию и кнопку, которая будет останавливать
исходную таблицу.
2. Ввести программу с клавиатуры с использованием Visual Studio 2005.
3. Отладить программу и запустить на выполнение.
5. СОДЕРЖАНИЕ ОТЧЕТА
В отчете должны быть представлен текст программы, значения вводимых величин
и полученные значения выводимых величин.
6. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
1. Что представляет собой объект DataTable ? Его основные свойства
2. Каким образом можно из заданной таблицы удалять строки?
3. Какие методы позволяют осуществлять сортировку и как они работают?
4. Как задаются критерии фильтрации в DataTable ?
5. Какие существуют методы позволяющие редактировать строку?
6. Что такое тип DataView? Его основные свойства.
7. Как функционирует элемент управления Data.Grid ?
Download