Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET
- Название:Обработка баз данных на Visual Basic®.NET
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2003
- Город:Москва
- ISBN:5-8459-0512-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET краткое содержание
Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000. Затем рассматриваются способы использования основных объектов модели ADO.NET для доступа к данным в реляционных базах данных. Благодаря подробным примерам, читатели могут изучить способы использования основных свойств и методов, а также узнать о более сложных компонентах и технологиях. Многочисленные листинги с кодом на языке Visual Basic .NET иллюстрируют используемые концепции, а бизнес-ситуации показывают практическую область их применения.
Обработка баз данных на Visual Basic®.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
10. Увеличьте размер сетки grdData, чтобы она занимала до 80% всей площади формы.
В верхней части файла введите следующий код:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Затем в определении класса формы frmXML введите код из листинга 10.1.
Private Sub btnReadXML_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnReadXML.Click
Dim dsPubs As New DataSet()
' Чтение XML-данных из файла.
dsPubs.ReadXml("..\Pubs.xml")
' Связывание объекта DataSet с сеткой данных DataGrid.
grdData.DataMember = "publishers"
grdData.DataSource = dsPubs
End Sub
Эта подпрограмма считывает XML-данные из файла pubs.xml в объект DataSet. Теперь объект DataSet и его данные могут использоваться любым из способов, описанных в предыдущих главах. Кроме того, эта подпрограмма связывает объект DataSet с сеткой данных DataGrid. В листинге 10.2 показано содержимое файла pubs.xml, а на рис. 10.1 — данные в сетке DataGrid.

РИС. 10.1. Содержимое файла pubs.xml в сетке DataGrid
0736
New Moon Books
Boston
MA
USA
0877
Binnet & Hardley
Washington
DC
USA
1389
Algodata Infosystems
Berkeley
CA
USA
1622
Five Lakes Publishing
Chicago
IL
USA
1756
Ramona Publishers
Dallas
TX
USA
9952
Scootney Books
New York
NY
USA
9999
Lucerne Publishing
France
После вызова метода ReadXML для загрузки данных в объект DataSet для свойства RowState всех новых строк задается значение Added. Этот подход отличается от принятого по умолчанию поведения, когда для загрузки данных в объект DataSet из базы данных используется объект DataAdapter и для свойства RowState всех новых строк задается значение Unchanged. Такой подход позволяет загружать данные из XML-источника и вставлять их в таблицу базы данных. Если вы не хотите этого делать, то можно с помощью метода AcceptChanges переустановить значение Unchanged для свойства RowState всех новых строк. Для изменения принятого по умолчанию поведения при загрузке данных в объект DataSet из базы данных можно указать значение False для свойства АсcеptChangesOnFill что приведет к автоматической установке значения Added для свойства RowState всех новых строк.
В данном примере демонстрируется простейший способ чтения XML-данных в объект DataSet, т.е. чтение из файла. Помимо этого способа, существует много других вариантов чтения XML-данных с помощью перегруженных версий метода ReadXML, например с помощью объектов Stream, TextReader или XmlReader. Соответствующие им перегруженные версии метода ReadXML содержат второй параметр со значением XmlReadMode. Этот параметр используется для указания способа интерпретации содержимого XML-источника и обработки схемы данных. В табл. 10.1 приведено краткое описание членов перечисления XmlReadMode.
Таблица 10.1. Перечисление XmlReadMode
Имя члена перечисления | Описание |
---|---|
ReadSchema | Считывает любую встроенную схему и загружает ее вместе с данными в объект DataSet. Таблицы, определенные в схеме, вставляются в объект Data-Set, но если схема определяет таблицу, которая уже есть в этом наборе данных, то генерируется исключительная ситуация |
IgnoreSchema | Игнорирует любую встроенную схему и загружает данные в объект DataSet с помощью существующего определения схемы. Любые данные, которые не соответствуют схеме объекта DataSet, игнорируются и не загружаются. Аналогично, если схема не определена, то данные не загружаются |
InferSchema | Игнорирует любую встроенную схему и выводит схему на основе структуры данных, а затем загружает данные в объект DataSet. Дополнительные таблицы и поля, определенные в результате такого анализа структуры данных, добавляются в уже существующую схему в объекте DataSet. В случае конфликта определений генерируется исключительная ситуация |
Fragment | Считывает все существующие XML-фрагменты и загружает данные в объект DataSet. Любые данные, которые не соответствуют схеме в объекте DataSet, игнорируются и не загружаются |
DiffGram | Считывает данные в формате DiffGram и загружает данные в объект DataSet. Новые записи сливаются с уже существующими записями с такими же значениями уникального идентификатора, в противном случае в объекте DataSet создаются новые записи. В случае несоответствия схем генерируется исключительная ситуация. (Формат DiffGram более подробно описывается далее в главе. — Прим. ред. ) |
Auto | Этот режим используется по умолчанию. При этом выполняется одна из следующих операций: если XML-данные имеют формат DiffGram, то выбирается член DiffGram перечисления XmlReadMode; если схема определена в объекте DataSet или встроена в XML-документ, то выбирается член ReadSchema перечисления XmlReadMode; в остальных случаях выбирается член InferSchema перечисления XmlReadMode |
Для чтения только схемы данных (и игнорирования данных) предусмотрена перегруженная версия метода ReadXmlSchema, которая может применяться для считывания схемы объектов DataTable объекта DataSet так, как показано ниже. MyDataSet.ReadXmlSchema("MySchemaFile.xml")
Те же четыре источника данных (файл, объекты Stream, TextReader и XmlReader) могут использоваться вместе с методом ReadXmlSchema. Объект DataSet имеет аналогичный набор методов для записи XML-данных.
Запись XML-данных
После загрузки в объект DataSet (независимо от способа и места загрузки) данные и/или схемы данных можно записать в XML-формате (с XML-схемой или без нее). Для демонстрации способов записи данных в XML-формате выполните перечисленные ниже действия.
1. Создайте в форме новую кнопку сразу под кнопкой Read XML, перетаскивая ее из панели инструментов.
2. В окне свойств Properties укажите значение btnWriteXML для свойства (Name) и значение Write XML для свойства Text этой кнопки.
3. Затем в определении класса формы frmXML введите код из листинга 10.3.
Private Sub btnWriteXML_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnWriteXML.Click
Dim dsSales As New DataSet()
Dim en As New SqlConnection _
("data source=localhost;initial catalog=pubs;user id=sa")
Dim daAuthors As New SqlDataAdapter("select * from sales", en)
Dim daPublishers As New SqlDataAdapter("select * from stores", en)
' Загрузка реляционных данных из базы данных.
daAuthors.Fill(dsSales, "Sales")
daPublishers.Fill(dsSales, "Stores")
' Запись XML-данных в файл
dsSales.WriteXml("…\StoreSales.xml")
' Запись схемы в XSD-файл.
dsSales.WriteXmlSchema("…\StoreSales.xsd")
End Sub
В этой подпрограмме создаются два объекта — адаптера данных (daAuthors и daPublishers), которые затем используются для вставки данных в объект dsPubs из двух таблиц базы данных pubs СУБД SQL Server. В листинге 10.4 приведено содержимое файла StoreSales.xml, который создается в результате выполнения этой подпрограммы. Обратите внимание на то, что данный XML-документ содержит записи о продажах, а затем записи о магазинах. Этот подход имеет смысл, так как между ними не задано никакого отношения. Если бы таблицы Sales и Stores были связаны, то эти записи можно было вложить друг в друга. Пример такого вложения приводится далее, в бизнес-ситуации 10.1.
Читать дальшеИнтервал:
Закладка: