Создание локальной базы данных MS SQL Server
В данной теме показано решение задачи создания базы данных типа SQL Server с помощью MS Visual Studio. Рассматриваются следующие вопросы:
- работа с окном Server Explorer в MS Visual Studio;
- создание локальной базы данных типа SQL Server Database;
- создание таблиц в базе данных;
- редактирование структур таблиц;
- связывание таблиц базы данных между собой;
- внесение данных в таблицы средствами MS Visual Studio.
Содержание
Условие задачи
Используя средства MS Visual Studio создать базу данных типа MS SQL Server с именем Education. База данных содержит две таблицы Student и Session. Таблицы между собой связаны по некоторыму полю.
Структура первой таблицы «Student».
Структура второй таблицы “Session”.
⇑
Выполнение
1. Загрузить MS Visual Studio.
⇑
2. Активировать окно Server Explorer.
Для работы с базами данных корпорация Microsoft предлагает облегченный сервер баз данных Microsoft SQL Server. Существуют разные версии Microsoft SQL Server, например: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 и прочие версии.
Загрузить эти версии можно с сайта Microsoft www.msdn.com.
Этот сервер отлично подходит для работы с базами данных. Он бесплатен и имеет графический интерфейс для создания и администрирования баз данных с помощью SQL Server Management Tool.
Прежде всего, перед созданием базы данных, нужно активировать утилиту Server Explorer. Для этого, в MS Visual Studio нужно вызвать (рис. 1)
View -> Server Explorer
Рис. 1. Вызов Server Explorer
После вызова окно Server Explorer будет иметь приблизительный вид, как показано на рисунке 2.
Рис. 2. Окно Server Explorer
⇑
3. Создание базы данных “Education”.
Чтобы создать новую базу данных, базирующуюся на поставщике данных Microsoft SQL Server, нужно кликнуть на узле Data Connections, а потом выбрать “Create New SQL Server Database …” (рис. 3).
Рис. 3. Вызов команды создания базы данных SQL Server
В результате откроется окно «Create New SQL Server Database» (рис. 4).
В окне (в поле «Server Name») указывается имя локального сервера, установленного на вашем компьютере. В нашем случае это имя “SQLEXPRESS”.
В поле «New database name:» указывается имя создаваемой базы данных. В нашем случае это имя Education.
Опцию Use Windows Autentification нужно оставить без изменений и нажать кнопку OK.
Рис. 4. Создание новой базы данных SQL Server 2008 Express с помощью MS Visual Studio 2010
После выполненных действий, окно Server Explorer примет вид, как показано на рисунке 5. Как видно из рисунка 5, в список имеющихся баз данных добавлена база данных Education с именем
sasha-pc\sqlexpress.Education.dbo
Рис. 5. Окно Server Explorer после добавления базы данных Education
⇑
4. Объекты базы данных Education.
Если развернуть базу данных Education (знак «+»), то можно увидеть список из следующих основных объектов:
- Database Diagrams – диаграммы базы данных. Диаграммы показывают связи между таблицами базы данных, отношения между полями разных таблиц и т.п.;
- Tables – таблицы, в которых помещаются данные базы данных;
- Views – представления. Отличие между представлениями и таблицами состоит в том, что таблицы баз данных содержат данные, а представления данных не содержат их, а содержимое выбирается из других таблиц или представлений;
- Stored procedures – хранимые процедуры. Они представляют собою группу связанных операторов на языке SQL, что обеспечивает дополнительную гибкость при работе с базой данных.
⇑
5. Создание таблицы Student.
На данный момент база данных Education абсолютно пустая и не содержит никаких объектов (таблиц, сохраненных процедур, представлений и т.д.).
Чтобы создать таблицу, нужно вызвать контекстное меню (клик правой кнопкой мышки) и выбрать команду “Add New Table” (рисунок 6).
Рис. 6. Команда добавления новой таблицы
Существует и другой вариант добавления таблицы базы данных с помощью команд меню Data:
Data -> Add New -> Table
Рис. 7. Альтернативный вариант добавления новой таблицы
В результате откроется окно добавления таблицы, которое содержит три столбца (рисунок 8). В первом столбце “Column Name” нужно ввести название соответствующего поля таблицы базы данных. Во втором столбце “Data Type” нужно ввести тип данных этого поля. В третьем столбце “ Allow Nulls”указывается опция о возможности отсутствия данных в поле.
Рис. 8. Окно создания новой таблицы
С помощью редактора таблиц нужно сформировать таблицу Student как изображено на рисунке 9. Имя таблицы нужно задать при ее закрытии.
В редакторе таблиц можно задавать свойства полей в окне Column Properties. Для того, чтобы задать длину строки (nvchar) в символах, в окне Column Properties есть свойство Length. По умолчанию значения этого свойства равно 10.
Рис. 9. Таблица Student
Следующим шагом нужно задать ключевое поле. Это осуществляется вызовом команды “Set Primary Key” из контекстного меню поля Num_book. С помощью ключевого поля будут установлены связи между таблицами. В нашем случае ключевым полем есть номер зачетной книжки.
Рис. 10. Задание ключевого поля
После установки первичного ключа окно таблицы будет иметь вид как изображено на рисунке 11.
Рис. 11. Таблица Student после окончательного формирования
Теперь можно закрыть таблицу. В окне сохранения таблицы нужно задать ее имя – Student (рис. 12).
Рис. 12. Ввод имени таблицы Student
⇑
6. Создание таблицы Session.
По образцу создания таблицы Student создается таблица Session.
На рисунке 13 изображен вид таблицы Session после окончательного формирования. Первичный ключ (Primary Key) устанавливается в поле Num_book. Имя таблицы задается Session.
Рис. 13. Таблица Session
После выполненных действий, в окне Server Explorer будут отображаться две таблицы Student и Session.
Таким образом, в базу данных можно добавлять любое количество таблиц.
⇑
7. Редактирование структуры таблиц.
Бывают случаи, когда нужно изменить структуру таблицы базы данных.
Для того, чтобы вносить изменения в таблицы базы данных в MS Visual Studio, сначала нужно снять опцию “Prevent Saving changes that require table re-creation” как показано на рисунке 14. Иначе, MS Visual Studio будет блокировать внесения изменений в ранее созданную таблицу. Окно Options, показанное на рисунке 14 вызывается из меню Tools в такой последовательности:
Tools -> Options -> Database Tools -> Table and Database Designers
Рис. 14. Опция “Prevent Saving changes that require table re-creation”
После настройки можно изменять структуру таблицы. Для этого используется команда “Open Table Definition” (рисунок 15) из контекстного меню, которая вызывается для выбранной таблицы (правый клик мышкой).
Рис. 15. Вызов команды “Open Table Definition”
Также эта команда размещается в меню Data:
Data -> Open Table Definition
Предварительно таблицу нужно выделить.
⇑
8. Установление связей между таблицами.
В соответствии с условием задачи, таблицы связаны между собою по полю Num_book.
Чтобы создать связь между таблицами, сначала нужно (рисунок 16):
- выделить объект Database Diagram;
- выбрать команду Add New Diagram из контекстного меню (или из меню Data).
Рис. 16. Вызов команды добавления новой диаграммы
В результате откроется окно добавления новой диаграммы Add Table (рисунок 17). В этом окне нужно выбрать последовательно две таблицы Session и Student и нажать кнопку Add.
Рис. 17. Окно добавления таблиц к диаграмме
Рис. 18. Таблицы Student и Session после добавления их к диаграмме
Чтобы начать устанавливать отношение между таблицами, надо сделать клик на поле Num_book таблицы Student, а потом (не отпуская кнопку мышки) перетянуть его на поле Num_book таблицы Session.
В результате последовательно откроются два окна: Tables and Columns (рис. 19) и Foreign Key Relationship (рис. 20), в которых нужно оставить все как есть и подтвердить свой выбор на OK.
В окне Tables and Columns задается название отношения (FK_Session_Student) и названия родительской (Student) и дочерней таблиц.
Рис. 19. Окно Tables and Columns
Рис. 20. Окно настройки свойств отношенияПосле выполненных действий будет установлено отношение между таблицами (рисунок 21).
Рис. 21. Отношение между таблицами Student и Session
Сохранение диаграммы осуществляется точно также как и сохранение таблицы. Имя диаграммы нужно выбрать на свое усмотрение (например Diagram1).
После задания имени диаграммы откроется окно Save, в котором нужно подтвердить свой выбор (рисунок 22).
Рис. 22. Подтверждение сохранения изменений в таблицах
⇑
9. Ввод данных в таблицы.
Система Microsoft Visual Studio разрешает непосредственно вносить данные в таблицы базы данных.
В нашем случае, при установлении связи (рис. 19) первичной (Primary Key Table) избрана таблица Student. Поэтому, сначала нужно вносить данные в ячейки именно этой таблицы. Если попробовать сначала внести данные в таблицу Session, то система заблокирует такой ввод с выводом соответствующего сообщения.
Чтобы вызвать режим ввода данных в таблицу Student, нужно вызвать команду Show Table Data из контекстного меню (клик правой кнопкой мышки) или с меню Data (рис. 23).
Рис. 23. Команда Show Table Data
Откроется окно, в котором нужно ввести входные данные (рис. 24).
Рис. 24. Ввод данных в таблице Student
После внесения данных в таблицу Student нужно внести данные в таблицу Session.
При внесении данных в поле Num_book таблицы Session нужно вводить точно такие же значения, которые введены в поле Num_book таблицы Student (поскольку эти поля связаны между собой).
Например, если в поле Num_book таблицы Student введены значения “101”, “102”, “103” (см. рис. 24), то следует вводить именно эти значения в поле Num_book таблицы Session. Если попробовать ввести другое значение, система выдаст приблизительно следующее окно (рис. 25).
Рис. 25. Сообщение об ошибке ввода данных связанных таблиц Student и Session
Таблица Session с введенными данными изображена на рисунке 26.
Рис. 26. Таблица Session с введенными данными
Итак, база данных создана. Ввод и обработку данных в таблицах можно реализовать программным путем.
⇑
Связанные темы
www.bestprog.net
ГЛАВА 8 Работа с проектом базы данных среде Visual Studio .NET
ГЛАВА 8
Работа с проектом базы данных среде Visual Studio .NET
Проект базы данных — это особый тип проекта Visual Studio .NET, предназначенный для создания и управления SQL-сценариями баз данных.
Чтобы разработка приложений для работы с базами данных была проще и удобнее, в последнюю версию Visual Studio .NET включено множество новых полезных инструментов, а также усовершенствованных прежних инструментов, которые присутствовали в ранних версиях программы.
Инструменты Visual Studio .NET для работы с базой данных позволяют пользователю, не выходя за пределы среды Visual Studio .NET, быстро создавать, изменять и тестировать объекты баз данных: таблицы, представления, запросы, хранимые процедуры и т.д. Главное достоинство данного продукта состоит в существенном повышении эффективности проектирования и создания программных продуктов. Кроме того, значительно упростилась установка и лицензирование программы.
Некоторые из рассмотренных далее инструментов описаны в предыдущих главах, а их использование часто имеет интуитивно понятный характер. Многие инструменты должны быть хорошо известны пользователям, которые имеют опыт работы с базами данных Microsoft Access. Тем же, кто сталкивается с такими инструментами впервые, будет полезно познакомиться со справочными материалами Visual Studio .NET.
В этой главе описываются способы применения инструментов проекта базы данных Visual Studio .NET для работы с базами данных.
Поделитесь на страничкеСледующая глава >
it.wikireading.ru
Редактирование данных в бд средствами Visual Studio
Рис. 4.1. |
Рис. 4.2. |
В окне Server Explorer, где представлены таблицы базы данных на Microsoft SQL Server в виде дерева (см. рис. 4.1.), для каждой таблицы можно открыть окно, нажатием на кнопку Show Table Data. Именно в этом окне предоставляется возможность редактирования данных таблицы. Выглядит это окно редактирования приблизительно так, как представлено на рис. 4.2. Приблизительно, потому что полный объем не вошел в рисунок в виду большого количества колонок.
Реализация отображения базы данных
Отображение базы данных (компонент DataSet) необходим для того, чтобы исключить лишние обращения к базе данных и к серверу. Это очень важная особенность, ведь если с базой работают множество пользователей, нагрузка на сервер может быть довольно большой – количество запросов во много раз больше, что приведет к замедлению работы исполнения запросов.
Поэтому, за счет DataSet на компьютере клиента находится отображение базы, с которой он работает. По завершении работы базы клиента и сервера синхронизируются (вернее, в серверную базу вносятся изменения, сделанные в базе данных клиента)
Отображение нашей базы данных на MS Visual Studio 2005 выглядит следующим образом:
Все числовые данные имеют тип Int32, строковые – String. Размеры строковых данных соответствуют тем, которые приведены в физической модели базы данных.
На скрине видно, что в каждой таблице имеются еще и TableAdapter’ы. Это своего рода мосты для соединения DataSet и источником данных. Здесь имеются такие методы, как Fill и GetData()
Этот метод предназначен для того, чтобы заполнять таблицу нужными данными из источника (файл базы данных)
Предназначен для того, чтобы брать данные из таблицы отображения.
Реализация программного обеспечения
Главной особенностью в реализации программного обеспечения является тот факт, что все классы, отвечающие за редактирования таблиц базы данных, наследуются от одного базового класса, что придает удобство в реализации. Методы этого базового класса были описаны выше. Виртуальные методы базового класса необходимо перекрыть в классе-потомке. Все эти методы позволяют менять у потомка такие параметры как: название заголовка формы, заполнение и сохранение нужной таблицы базы данных (один класс-потомок работает только с одной таблицей, в смысле редактирование данных; однако при отображении данных пользователю, возможно использования нескольких таблиц базы данных с целью показывать данные в понятной пользователю форме).
Интерфейс программы
Главное окно представляет собой MDI приложение, которое имеет следующее меню:
|
Каждая из таблиц для редактирования БД вызывается соответствующим пунктом меню «Таблицы».
Отчет о нагрузке на преподавателей, также создается по нажатию на соответствующий пункт меню «Отчеты».
Как дополнительная возможность программного обеспечения, существует пункт меню «Консоль», которая позволяет исполнять SQL запросы к базе данных, введенные пользователем и выводить результат в таблицу (компонент DataTable). Для этого, конечно, необходимо знать названия таблиц и полей, и, в основном, создавалась с целью удобства в реализации программного обеспечения, но также этим могут воспользоваться и другие «посвященные» пользователи.
studfiles.net
Создание базы данных ( В Visual Studio на С#)
Очень подробные методические указания по созданию баз данных на C# в microsoft visual studio. Содержит множество иллюстраций этапов для наглядности (скриншоты).
Пользуясь даже только ею сможете создать готовую БД (СУБД) с нуля mvs.
Содержание:
- Введение
- Шаг 1: Создание базы данных
- Шаг 2: Создание визуального интерфейса в Microsoft Visual Studio .NET
- Создание файла приложения.
- Подключение базы данных.
- Проектирование основной формы.
- Создание формы для работы с таблицами
- Обработка меню «Удалить текущую запись»
- Обработка меню «Сохранить изменения»
- Обработка меню «Вернуться»
- Меню «Экспорт»
- Создание экспорта в Excel
- Создание экспорта в HTML
- Обработка меню «Запросы»
- Обработка кнопки «Выполнение запроса»
- Очистка текстового окна для произвольных запросов
- Создание отчетов с помощью GrystaiReports,
- Приложение
- Заключение
Введение
В ходе практики необходимосоздать интефейс в виде графических приложений для работы с базой данных. Он является, связующим звеном между конечными пользователями и базой данных.
В качестве инструментального средства разработки приложений демонстрируется среда Microsoft Visual Studio.NET. Все приложения созданы на языке С# с использованием технологии доступа к данным ADO.NET. Данный язык реализует объектно-ориентированную модель программирования, а также предоставляет наибольшую функциональность и удобство разработки.
Программа является диалоговым многооконным приложением. В ней реализована форма, предоставляющая доступ к остальным окнам программы. Просмотр таблиц осуществляется с помощью небольшой диалоговой формы, позволяющей удалять старые записи, добавлять новые и изменять существующие. Таким образом, работа со всеми таблицами реализована на одной форме.
База данных автоматически проверяет вводимые поля на целостность данных. В программе реализована возможность выполнения типовых запросов к базе данных, созданных в курсовой работе ранее в предыдущем учебном модуле. Ввод и просмотр запросов осуществляется в соответствующем диалоговом окне.
При работе с подобными приложениями следует выделить 3 логических этапа:
- проектирование базы данных в Erwin или другом Case-средстве;
- перенос спроектированной базы в SQL Server и ее заполнение;
- создание интерфейса в среде программирования Microsoft Visual Studio 2005
fevt.ru
Тема 5.6. Технология работы с данными в среде Visual Studio .Net
5.6.1. Создание приложений для обработки данных в среде Visual Studio .NET
5.6.2. Основные понятия модели доступа к данным – ADO .NET
5.6.3. Примеры разработки приложений для работы с базами данных СУБД Access
5.6.3.1. Пример создания проекта «Пропуски» для работы с БД «DataBase1»
5.6.3.2. Пример создания проекта «ОценкиСтудентов» для работы с БД
«DataBase2»
5.6.4. Задачи для самостоятельного решения по теме «Технология работы с
данными в среде Visual Studio .NET»
5.6.5. Тестовые задания по теме «Технология работы с данными в среде
Visual Studio .NET»
5.6.1. Создание приложений для обработки данных в среде Visual Studio .Net
С самого своего рождения программирование решало задачи обработки данных, поэтому практически во всех приложениях данные в том или ином виде хранятся в некоторых хранилищах, а сами приложения предоставляют способы просмотра, редактирования, обновления и использования этих данных (рис. 5.6.1-1).
Рис. 5.6.1-1
Visual Studio .NETпредоставляет множество средств разработки приложений, которые призваны помочь пользователю в процессе создания приложений, получающих доступ к данным. Кратко рассмотрим основные процессы, которые задействованы при создании приложений, работающих с данными.
При разработке приложений в Visual Studio, работающих с данными, к ним могут предъявляться различные требования. В некоторых случаях требуется только отобразить данные в форме, а в других может потребоваться разработать способ обмена информацией с другими приложениями или процессами.
Основной архитектурой данных, которая используется для создания приложений в Visual Studio .NET, являетсяADO.NET. Для всех операций, выполняемых с данными, существуют некоторые основные понятия, которые следует знать. Возможно, никогда не потребуется узнать некоторые детали обработки данных – например, может не потребоваться программно создавать базу данных. В то же время, очень полезно представлять структуруADO.NET, так же как и использовать средства для работы с данными (мастера и конструкторы), доступные вVisual Studio.
Общие задачи по работе с данными в приложении можно разделить на несколько процессов верхнего уровня. Так, например, прежде чем отобразить данные пользователю на форме, необходимо сначала подключиться к источнику данных (к базе данных или к службе, предоставляющей данные), а затем выбрать данные, которые требуется отобразить. После импорта этих данных в приложение, могут потребоваться средства для их временного хранения.
В клиент-серверныхприложениях традиционно используется технология доступа к источнику данных, в которыхсоединение с базой поддерживается постоянно. Однако после широкого распространения приложений, ориентированных наWeb-приложения, выявились некоторые недостатки такого подхода.
Так, например, соединения с базой данных требуют выделения системных ресурсов, что может быть критично при большой нагрузке сервера. Хотя постоянное соединение позволяет несколько ускорить работу приложения, общий убыток от растраты системных ресурсов сводит преимущество к нулю.
Особенность Web-приложений не позволяет серверу в каждый момент времени знать, что необходимо пользователю. То есть, до следующего запроса сервер не имеет представления, нужно ли еще поддерживать соединение.
Опыт разработчиков показал, что приложения, постоянно соединенные с источником данных, чрезвычайно трудно поддаются масштабированию. Хотя существуют и другие недостатки, приведенные выше наиболее существенны. Все эти проблемы порождаются постоянным соединением с базой данных и решаются в ADO .NETследующим образом.
Во-первых, используется другая модель доступа. В этой модели доступа соединение устанавливается лишь на то короткое время, когда необходимо проводить операции над базой данных. Такая модель работы с данными называется модель с отсоединенными источниками данных.
Во-вторых, для обмена текстовыми данными используется формат XHL.
Следует признать, что новая технология иногда все же проигрывает традиционной. Примерами таких приложений служат программы, проводящие частые и объемные изменения содержания записей базы данных.
Обычные приложения, работающие с данными, используют большинство из процессов (задач), показанных на рис. 5.6.1-2.
Цикл данных
Рис. 5.6.1-2
Следует помнить, что вспомогательные программы (МастераиКонструкторы) помогают упростить процессы работы с данными, отображенные на рис. 5.6.1-2. Например, запускМастера настройки источника данных предоставляет приложению достаточно сведений для подключения к данным, для создания типизированного набора данных, для получения данных и для переноса данных в приложение.
Кратко рассмотрим назначение процессов из диаграммы, приведенной на рис. 5. 6.2-2.
Подключение к данным. Чтобы перенести данные в приложение (и отправить изменения обратно в источник данных), необходимо установить двустороннее соединение. Этот двусторонний обмен данными обычно обрабатывается подключением TableAdapter в приложениях, использующих наборы данных. Visual Studio предоставляет несколько средств для упрощения создания подключений, которые могут быть использованы в приложении.
Подготовка приложения к получению данных. Если приложение использует модель с отсоединенными источниками данных,необходимо временно где-то хранить данные в приложении во время работы с ним.Visual Studio .NETпредоставляет средства, помогающие создавать объекты, которые приложение использует для временного хранения данных. Необходимо обратить внимание, что приложение, использующее модель с отсоединенными источниками данных,подключается к базе данных обычным образом, выполняет запрос, передающий данные в приложение, отключается от базы данных, а затем оперирует данными в автономном режиме до повторного подключения и обновления базы данных.
Выборка данных в приложение. Вне зависимости от того, использует ли приложение модель с отсоединенными источниками данных, необходимо обеспечить загрузку данных в приложение. Обычно данные в приложение загружаются путем выполнения запроса над базой данных. Приложения, хранящие данные в наборах данных, выполняют запросы с помощьюTableAdapter.
Отображение данных на форме в приложении Windows. После переноса данных в приложение их обычно отображают на форму для просмотра или изменения.Visual Studio.NETпредоставляет окноИсточники данных (Data Sources),откуда можно перетащить элементы данных на форму, чтобы автоматически создать элементы управления с привязкой к данным, отображающие эти элементы данных.
Редактирование данных в приложении. После того, как пользователям стали доступны данные, они могут изменять их путем добавления новых, редактирования и удаления существующих записей до их передачи обратно в базу данных. Эти изменения обычно выполняются через управление отдельными объектами, составляющими таблицы в наборе данных. Необходимо обратить внимание, что при перетаскивании элементов из окнаИсточники данных (Data Sources) на форму, большинство изменений данных автоматически обрабатываются через элементы управления с привязкой к данным. При изменении значений в элементе управления, новые значения автоматически записываются в набор данных.
Проверка данных. Обычно при внесении изменений в данные необходимо проверить изменения перед разрешением внесения значений в набор данных или в базу данных. Проверка – это процесс, проверяющий эти новые значения на соответствие требованиям приложения. Для проверки значений в приложении по мере их изменения пользователь может добавить соответствующую логику.Visual Studio .NETпредоставляет средства, помогающие добавлять программный код, проверяющий данные во время изменения значений столбцов и строк.
Сохранение данных. После внесения изменений в приложении (и проверки этих изменений), обычно требуется отправить изменения обратно в базу данных.
studfiles.net
Работа с наборами данных в Visual Studio
Работа с наборами данных в Visual Studio
Опубликовано: Апрель 2016
Наборы данных представляют собой объекты, содержащие таблицы данных, в которых можно временно хранить данные для их использования в приложении. Если ваше приложение требует работы с данными, можно загрузить их в набор данных. Данные для работы приложения в этом случае будут храниться в локальной памяти. Можно работать с данными в наборе данных, даже если приложение отключается от базы данных. Набор данных хранит информацию об изменениях своих данных. Так что обновления можно отслеживать и отправлять обратно в базу данных, когда ваше приложение вновь подключится к ней.
В следующих разделах содержатся сведения о работе с наборами данных в Visual Studio:
Структура DataSet схожа со структурой реляционной базы данных; она предоставляет собой иерархическую объектную модель таблиц, строк, столбцов, ограничений и связей.
Наборы данных могут быть типизированными или нетипизированными. (Дополнительную информацию см. ниже в разделе «Типизированные и нетипизированные наборы данных».) Типизированные наборы данных получают свою схему (таблицу и структуру столбцов) из файлов XSD и проще программируются. В своих приложениях можно использовать как типизированные, так и нетипизированные наборы данных. Однако для поддержки типизированных наборов данных в Visual Studio предусмотрено больше инструментов, которые упрощают процесс программирования наборов данных и уменьшают вероятность возникновения ошибки.
Создать типизированный набор данных можно, запустив мастер мастер настройки источника данных, или путем добавления элемента DataSet с помощью команды «Добавить новый элемент» в меню «Проект». Дополнительные сведения см. в разделе Практическое руководство. Создание типизированного набора данных.
Создать нетипизированный набор данных можно, перетаскивая элементы объекта DataSet из панели элементов на Windows Forms Designer или Component Designer.
После создания набора данных его можно редактировать в Создание и изменение типизированных наборов данных.
Создавать типизированные и нетипизированные наборы данных и работать с ними можно с помощью следующих разделов .NET Framework пространства имен:
Наборы данных находятся в пространстве имен System.Data
Объекты набора данных доступны разработчику посредством стандартных программных конструкций, таких как свойства и коллекции. Примеры.
Заполнение набора данных
По умолчанию набор данных не содержит данных. Заполнение набора данных фактически означает загрузку данных в отдельные объектыDataTable, составляющие набор данных. Таблицы данных заполняются путем выполнения запросов адаптера таблиц или выполнением команд адаптера данных (например SqlDataAdapter). При заполнении набора данных возникают различные события, проверяются ограничения, и т. д. Дополнительные сведения о загрузке данных в набор данных содержатся в разделе Выборка данных в приложение.
Код для заполнения набора данных автоматически добавляется в обработчик событий загрузки формы при перетаскивании элементов из окно «Источники данных» на форму в приложении Windows. Для получения дополнительных сведений выполните следующий пример: Пошаговое руководство. Отображение данных на форме в приложении Windows.
Пример заполнения набора данных с помощью адаптера таблиц
C#
VB
Me.CustomersTableAdapter.Fill(Me.NorthwindDataSet.Customers)
Заполнять наборы данных можно различными способами:
- Если вы создали набор данных с использованием средств проектирования, например с помощью мастера данных, вызовите метод Fill адаптера таблиц. (Адаптеры таблиц создаются при помощи используемого по умолчанию метода Fill, но у вас есть возможность изменить имя метода, поэтому фактическое имя может быть иным.) Для получения дополнительных сведений см. «Заполнение набора данных с использованием адаптеров таблиц», раздел в Практическое руководство. Заполнение данными набора данных.
- Вызовите метод Fill объекта DataAdapter. Дополнительные сведения см. в разделе Заполнение DataSet из адаптера данных DataAdapter.
- Вручную таблицы набора данных можно заполнить, создавая объекты DataRow и добавляя их в коллекцию таблицы DataRowCollection. (Это можно делать только во время выполнения программы; во время разработки задавать элементы коллекции DataRowCollection нельзя.) Дополнительные сведения см. в разделе Добавление данных в DataTable.
- Считывание XML-документа или потока в набор данных. Дополнительные сведения см. в описании метода ReadXml. Пример см. в разделе Пошаговое руководство. Считывание XML-данных в набор данных.
- Слияние (копирование) содержимое одного набора данных с другим. Данный сценарий полезен тогда, когда приложение получает наборы данных из различных источников (например из различных веб-служб XML), но при этом требуется объединить их в один набор данных. Дополнительные сведения см. в разделе Объединение содержимого DataSet.
- Слияние (копирование) содержимого одной таблицы DataTable с другой.
Сохранение данных из набора данных обратно в базу данных
При внесении изменений в записи набора данных эти изменения должны быть записаны в базу данных. Для записи изменений из набора данных в базу данных необходимо вызвать метод Update адаптера таблицы или адаптера данныхDataAdapter, который выполняет обмен данными между набором данных и соответствующей базой данных.
При использовании средств проектирования работы с данными в Visual Studio пересылайте данные обратно в базу данных с помощью метода Update объекта адаптера таблиц для сохраняемых таблиц данных. Примеры.
C#
VB
CustomersTableAdapter.Update(NorthwindDataSet.Customers)
Для более четкого управления процессом обновления вызовите один из методов DBDirect адаптера таблиц, с помощью которого можно передать отдельные значения для каждой строки данных. Дополнительные сведения см. в разделах Практическое руководство. Обновление данных с помощью адаптера таблицы и Пошаговое руководство. Сохранение данных с помощью методов DBDirect адаптера таблицы.
Класс DataRow, используемый для работы с отдельными записями, содержит свойство RowState, значение которого указывает, была ли изменена строка с момента первой загрузки таблицы из базы данных. Возможные значения — [, F:System.Data.DataRowState.Deleted и](assetId:///, F:System.Data.DataRowState.Deleted и?qualifyHint=False&autoUpgrade=True), Modified, Added, и Unchanged. Методы обновления Update адаптера таблиц и адаптера данных DataAdapter проверяют значение свойства RowState, чтобы определить, какие записи необходимо записать в базу данных и какие конкретно команды указанной базы данных (InsertCommand, UpdateCommand и DeleteCommand) должны вызываться.
Дополнительные сведения об обновлении данных см. в разделе Сохранение данных.
Навигация по записям в наборах данных
Так как наборы данных представляют собой полностью отсоединенные от базы данных контейнеры данных, то они (в отличие от наборов записей ADO) не поддерживают понятие текущей записи. Вместо этого доступны все записи в наборе DataSet в любой момент.
Так как не существует текущей записи, то не существует и специального свойства, которое бы указывало на текущую запись, а также методов и свойств для перемещения от одной записи к другой (см. замечание ниже). Можно осуществлять доступ к отдельным таблицам из набора данных как к объектам; каждая таблица представляет собой коллекцию строк. С ней можно работать как с любой другой коллекцией, т. е. обращаться к строкам с помощью индексов коллекции или операторов, определенных для коллекций в используемом языке программирования.
Например, можно получить четвертую строку таблицы Customers с помощью следующего кода:
C#
VB
TextBox1.Text = NorthwindDataSet.Customers(3).ContactName
LINQ to DataSet
LINQ to DataSet позволяет использовать запрос LINQ (Language-Integrated Query) для данных в объекте DataSet. Дополнительные сведения см. в разделе LINQ to DataSet.
Наборы данных и XML
Набор данных – это реляционное представление данных, которое в свою очередь может быть представлено в виде XML. Тесная связь между наборами данных и XML позволяет получить следующие преимущества:
- Структура набора данных – его таблицы, столбцы, отношения и ограничения – может быть определена в виде схемы XML. Наборы данных могут читать и записывать схемы, хранящие структурированную информацию, с помощью методовReadXmlSchema и WriteXmlSchema. Если нет доступной схемы, набор данных может попробовать получить такую (с помощью своего метода InferXmlSchema) из данных в XML-документе, имеющем реляционную структуру. Дополнительные сведения о схемах XML см. Построение XML-схем.
- Можно создать класс набора данных, включающий в себя информацию о схеме, для определения структуры данных. Такой класс называется типизированным набором данных. Сведения о создании типизированных наборов данных содержатся в разделе Практическое руководство. Создание типизированного набора данных.
- Можно прочесть документ или поток XML в набор данных с помощью метода ReadXml набора данных и записать набор данных в виде XML с помощью метода WriteXml. Так как XML – это стандартный формат обмена данными между приложениями, то это означает, что можно загрузить набор данных XML-форматированными данными, полученными от других приложений. Аналогичным образом набор данных может сохранить свои данные в виде XML-потока или документа для того, чтобы предоставить их другим приложениям для совместного использования, или просто для того, чтобы сохранить данные в стандартном формате.
- Можно создать XML-представление (объект XmlDataDocument) содержимого набора данных или таблиц данных, а затем просматривать и обрабатывать данные, используя как реляционные методы (набора данных), так и методы работы с XML. Оба представления автоматически синхронизируются при их изменении.
Сравнение типизированных и нетипизированных наборов данных
Типизированный набор данных извлекается из базового класса DataSet и затем использует сведения из Конструктора наборов данных, которые хранятся в XSD-файле, для создания нового строго типизированного класса набора данных. Сведения, указанные в схеме (таблицы, столбцы и т. д.), создаются и компилируются в этот новый класс набора данных как набор объектов и свойств первичного класса. Так как типизированные наборы данных наследуются от базового класса DataSet, типизированный класс обладает всеми функциональными возможностями класса DataSet и может использоваться с методами, принимающими экземпляр класса DataSet в качестве параметра.
Нетипизированный набор данных, в отличие от типизированного, не имеет соответствующей встроенной схемы. Как и типизированный набор данных, нетипизированный набор содержит такие структуры, как таблицы, столбцы и др., однако они доступны только как коллекции. (Однако после создания вручную таблиц и других элементов данных нетипизированного набора данных можно экспортировать структуру набора данных в качестве схемы с помощью метода WriteXmlSchema набора данных.)
Доступ к данным в типизированных и нетипизированных наборах данных
Класс для типизированного набора данных имеет объектную модель, в которой его свойства принимают действительные имена таблиц и столбцов. Например, при работе с типизированными наборами данных можно ссылаться на столбцы с помощью следующего кода:
C#
VB
‘ This accesses the CustomerID column in the first row of the Customers table.
Dim customerIDValue As String = NorthwindDataSet.Customers(0).CustomerID
В то же время при работе с нетипизированным набором данных эквивалентный код будет выглядеть так:
C#
VB
Dim customerIDValue As String =
CType(dataset1.Tables(«Customers»).Rows(0).Item(«CustomerID»), String)
Типизированный доступ не только отличается большей удобочитаемостью, но и полностью поддерживается технологией IntelliSense в Visual Studio Редакторе кода. Помимо того, что с таким кодом проще работать, синтаксис для типизированного набора данных позволяет проверять типы во время компиляции, что существенно уменьшает вероятность ошибок при присвоении значений элементам набора данных. Если изменить имя столбца в DataSet и затем скомпилировать приложение, будет получена ошибка построения. Двойным щелчком клавишей мыши по ошибке построения в Списке задач можно перейти непосредственно к строке(-ам) кода, ссылающейся на старое имя столбца. Кроме того, доступ к таблицам и столбцам в типизированном наборе данных во время выполнения происходит несколько быстрее, так как доступ определяется на этапе компиляции, а не с помощью коллекций во время выполнения.
Хотя типизированные наборы данных обладают рядом преимуществ, во многих случаях целесообразно применять нетипизированные наборы. Самый очевидный сценарий – когда для набора данных нет доступной схемы. Такое может произойти, например, если приложение взаимодействует с компонентом, который возвращает набор данных, но при этом его структура заранее не известна. Иногда приходится работать с данными, не имеющими статической предопределенной структуры; в этом случае работать с типизированным набором данных нецелесообразно, так как приходится заново создавать класс типизированного набора данных при каждом изменении структуры данных.
Довольно часто приходится создавать наборы данных динамически, не имея доступной схемы. В этом случае набор данных является просто удобной структурой, в которой можно хранить данные до тех пор, пока они не будут представлены в виде реляционной структуры. В то же время можно использовать такие дополнительные возможности набора данных, как сериализация данных для передачи их в другой процесс или для сохранения в виде XML-файла.
Зависимость от регистра в наборе данных
По умолчанию имена таблиц и столбцов в наборе данных не зависят от регистра. Это означает, что к таблице Customers в наборе данных можно также обратиться и по имени customers. Такой подход соответствует соглашениям о присвоении имен, принятым во многих СУБД, включая SQL Server, где имена элементов данных не должны отличаться друг от друга только регистром букв.
Примечание |
В отличие от наборов данных, XML-документы зависят от регистра, следовательно, имена элементов данных, определенные в схемах, также зависят от регистра. Например, протокол схемы позволяет определить одну таблицу как «Customers», а другую таблицу как «customers». Это может привести к конфликту имен, если для создания набора данных используется схема, содержащая элементы, различающиеся только регистром. |
Однако чувствительность к регистру может быть фактором, определяющим способ интерпретации данных в наборе. Например, при фильтрации данных в таблице набора данных критерий поиска может возвращать различные результаты в зависимости от того, учитывается при сравнении регистр или нет. Можно управлять чувствительностью к регистру при фильтрации, поиске и сортировке, устанавливая свойство CaseSensitive набора данных. По умолчанию все таблицы набора данных наследуют это свойство. (Можно переопределить это свойство для каждой отдельной таблицы, установив свойство CaseSensitive таблицы.)
Связанные таблицы и объекты DataRelation
Если в наборе данных имеется несколько таблиц, то данные, содержащиеся в них, могут быть взаимосвязаны. Набор данных не имеет встроенных сведений о таких отношениях, поэтому для работы с данными в связанных таблицах необходимо создать объекты DataRelation, которые описывают отношения между таблицами в наборе данных. Дополнительные сведения см. в разделе Практическое руководство. Получение доступа к записям в связанных объектах DataTable. Объекты DataRelation могут использоваться для программного извлечения дочерних записей для указанной родительской и наоборот. Дополнительные сведения см. в разделе Отношения в наборах данных. Если база данных содержит отношения между двумя и более таблицами, средства разработки автоматически создадут объекты DataRelation.
Пусть, например, данные о клиентах и заказах организованы так, как в базе данных Northwind. Таблица Customers может содержать записи следующего вида:
CustomerID CompanyName City
ALFKI Alfreds Futterkiste Berlin
ANTON Antonio Moreno Taquerias Mexico D.F.
AROUT Around the Horn London
Набор данных может также содержать другую таблицу, содержащую сведения о заказах. В таблице Orders столбец «Идентификатор заказчика» является внешним ключом. Если выбрать лишь несколько столбцов из таблицы Orders, можно получить следующее:
OrderId CustomerID OrderDate
10692 ALFKI 10/03/1997
10702 ALFKI 10/13/1997
10365 ANTON 11/27/1996
10507 ANTON 4/15/1997
Так как каждый клиент может сделать более одного заказа, то связь между клиентами и заказами будет иметь тип «один-ко-многим». Например, в приведенной выше таблице клиент ALFKI имеет два заказа.
Можно использовать объект DataRelation для получения связанных записей из дочерней или родительской таблицы. Например, при работе с записью, описывающей клиента ANTON, можно получить коллекцию записей, описывающих сделанные им заказы. Дополнительные сведения см. в разделе GetChildRows. Аналогичным образом, при работе с дочерней записью, описывающей заказ с кодом 10507, можно с помощью объекта отношения добраться до родительской записи клиента с кодом ANTON. Дополнительные сведения см. в разделе GetParentRow.
Ограничения
Как и в большинстве баз данных, наборы данных поддерживают ограничения в качестве способа обеспечения целостности данных. Ограничения представляют собой правила, применяемые при вставке, обновлении или удалении строк, содержащихся в таблице. Можно определить два типа ограничений:
- Уникальное ограничение: новые значения в столбце должны быть уникальными в пределах таблицы.
- Ограничение внешнего ключа, которое определяет правила обновления дочерних записей в связанной таблице при обновлении или удалении соответствующих записей в основной таблице. Например, ограничение внешнего ключа проверяет существование родительской записи перед разрешением на создание любых дочерних записей.
В наборе данных ограничения ассоциируются с отдельными таблицами (ограничения внешнего ключа) или столбцами (ограничение уникальности, гарантирующее уникальность значений в столбце). Ограничения реализуются как объекты типа UniqueConstraint или ForeignKeyConstraint. Затем они добавляются к коллекции Constraints объекта класса DataTable. Ограничение уникальности можно указать, установив свойство Unique объекта класса DataColumnв true.
Набор данных сам по себе поддерживает свойство EnforceConstraints булева типа, которое указывает, требуется ли выполнять ограничение. По умолчанию для свойства задано значение true. Однако бывают случаи, когда целесообразно временно отключить ограничения. Чаще всего это происходит при изменении записи таким образом, что на некоторое время возникает недопустимое состояние. После того как все изменения будут внесены (следовательно, состояние снова станет допустимым), ограничения можно опять включить.
В Visual Studio ограничения создаются неявно при определении набора данных. При добавлении к набору данных первичного ключа неявно создается ограничение уникальности для столбца первичного ключа. Можно указать уникальное ограничение для других столбцов, установив их свойство Unique в true.
Ограничения по внешнему ключу создаются созданием объекта DataRelation в наборе данных. Объект DataRelation позволяет разработчику не только получать сведения о связанных записях программным путем, но и определять правила ограничений по внешнему ключу.
Расширенные свойства наборов данных
Расширенные свойства предоставляют возможность сопоставления имен при возникновении конфликтов именования в процессе создания набора данных из XSD-файла. Если идентификатор в XSD-файле отличается от имени, созданного генератором набора данных, расширенное свойство добавляется к набору данных в пространстве имен msprop. В следующей таблице показаны возможные расширенные свойства, которые могут быть сгенерированы:
Объект. | Расширенное свойство |
DataSet | msprop:Generator_UserDSName |
msprop:Generator_DataSetName | |
DataTable | msprop:Generator_UserTableName |
msprop:Generator_TablePropName | |
msprop:Generator_TableVarName | |
msprop:Generator_TableClassName | |
msprop:Generator_RowClassName | |
msprop:Generator_RowEvHandlerName | |
msprop:Generator_RowEvArgName | |
DataColumn | msprop:Generator_UserColumnName |
msprop:Generator_ColumnPropNameInTable | |
msprop:Generator_ColumnPropNameInTable | |
msprop:Generator_ColumnPropNameInRow |
См. также
Подготовка приложения к получению данных
Общие сведения о приложениях для работы с данными в Visual Studio
Подключение к данным в Visual Studio
Выборка данных в приложение
Привязка элементов управления к данным в Visual Studio
Редактирование данных в приложении
Проверка данных
Сохранение данных
webhamster.ru