Рейтинговые книги
Читем онлайн Обработка баз данных на Visual Basic®.NET - Джеффри Мак-Манус

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 74 75 76 77 78 79 80 81 82 ... 88

   <FirstName>Carole</FirstName>

   <LastName>Vermeren</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>222</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2033</ID>

   <FirstName>Cathy</FirstName>

   <LastName>Johnson</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>13000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2036</ID>

   <FirstName>Richard</FirstName>

   <LastName>Halpin</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>10000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2040</ID>

   <FirstName>Randy</FirstName>

   <LastName>Hobaica</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>18000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2043</ID>

   <FirstName>Brad</FirstName>

   <LastName>Townsend</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>12000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2044</ID>

   <FirstName>Jennifer</FirstName>

   <LastName>Eves</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>26000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>204V</ID>

   <FirstName>Angela</FirstName>

   <LastName>Stefanac</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>16000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2048</ID>

   <FirstName>Marjorie</FirstName>

   <LastName>Bassett</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>34000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2052</ID>

   <FirstName>Mike</FirstName>

   <LastName>Doberstein</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>42000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2056</ID>

   <FirstName>Mikki</FirstName>

   <LastName>Lemay</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>50000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2060</ID>

   <FirstName>Richard</FirstName>

   <LastName>Rosenthal</LastName>

   <DepartmentID>2</DepartmentID>

   <Salary>58000</Salary>

  </tblEmployee>

 </tblDepartment>

 <tblDepartment>

  <ID>3</ID>

  <DepartmentName>Sales</DepartmentName>

  <tblEmployee>

   <ID>2037</ID>

   <FirstName>Kathleen</FirstName>

   <LastName>Johnson</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>18000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2041</ID>

   <FirstName>Matthew</FirstName>

   <LastName>Haglund</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>30000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2045</ID>

   <FirstName>Steve</FirstName>

   <LastName>Marshall</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>42000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2049</ID>

   <FirstName>Joe</FirstName>

   <LastName>Chideya</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>54000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2053</ID>

   <FirstName>Terri</FirstName>

   <LastName>Woodruff</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>66000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2057</ID>

   <FirstName>Randy</FirstName>

   <LastName>Nelson</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>78000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2061</ID>

   <FirstName>Mike</FirstName>

   <LastName>Woodruff</LastName>

   <DepartmentID>3</DepartmentID>

   <Salary>90000</Salary>

  </tblEmployee>

 </tblDepartment>

 <tblDepartment>

  <ID>4</ID>

  <DepartmentName>Marketing</DepartmentName>

  <tblEmployee>

   <ID>2034</ID>

   <FirstName>Eric</FirstName>

   <LastName >Haglund</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>12000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2038</ID>

   <FirstName>Sorel</FirstName>

   <LastName>Polito</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>28000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2042</ID>

   <FirstName>Cathy</FirstName>

   <LastName>Vermeren</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>0</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2046</ID>

   <FirstName>Laura</FirstName>

   <LastName>Davidson</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>60000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2050</ID>

   <FirstName>Katie</FirstName>

   <LastName>Chideya</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>76000</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2054</ID>

   <FirstName>Cathy</FirstName>

   <LastName>Rosenthal</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>5555</Salary>

  </tblEmployee>

  <tblEmployee>

   <ID>2058</ID>

   <FirstName>Kathleen</FirstName>

   <LastName>Husbands</LastName>

   <DepartmentID>4</DepartmentID>

   <Salary>108000</Salary>

  </tblEmployee>

 </tblDepartment>

</NewDataSet>

Создание объекта XmlReader с помощью объекта Command

В главе 4, "Модель ADO.NET: провайдеры данных", описываются способы работы с объектом Command, который является ключевым объектом — провайдером данных на платформе .NET. В ней рассматриваются способы выполнения команд на основе объектов ExecuteReader, ExecuteScalar и ExecuteNonQuery. Хотя все провайдеры данных на платформе .NET реализуют эти методы, объект SqlCommand имеет дополнительный метод ExecuteXmlReader, который используется для извлечения и доступа к XML-данным из СУБД SQL Server.

Метод ExecuteXmlReader возвращает объект XmlReader точно так же, как он возвращает объект DataReader.

Для демонстрации применения метода ExecuteXmlReader вернитесь к проекту ADO-XML и выполните следующее.

1. Включите в форму frmXML под кнопкой Write XML еще одну кнопку, перетаскивая ее из панели элементов управления.

2. В окне свойств Properties укажите значение btnExecuteXML для свойства (Name) и значение ExecuteXMLReader для свойства Text этой кнопки.

3. Затем в определении класса формы frmXML введите код из листинга 10.12.

Листинг 10.12. Код извлечения и обработки данных из СУБД SQL Server в формате XML

Private Sub btnExecuteXML_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles btnExecuteXML.Click

 Dim cn As New SqlConnection _

  ("data source=localhost;initial catalog=pubs;user id=sa")

 Dim cmd As New SqlCommand _

  ("select * from stores for xml auto, elements", en)

 Dim reader As Xml.XmlReader

 Dim str As New System.Text.StringBuilder()

 cn.Open()

 ' Выполнение SQL-команды Select с предложением FOR XML.

 reader = cmd.ExecuteXmlReader()

 ' Поиск и извлечение данных из узлов-элементов.

 While reader.Read()

  Select Case reader.NodeType

  Case Xml.XmlNodeType.Element

   str.Append("<" & reader.Name & ">")

  Case Xml.XmlNodeType.EndElement

   str.Append("</" & reader.Name & ">" & ControlChars.CrLf)

  Case Xml.XmlNodeType.Text

   str.Append(reader.Value)

  Case Else

   ' В данном примере игнорируется.

  End Select

 End While

 MsgBox(str.ToString)

 сn.Close()

End Sub

Код в листинге 10.12 содержит пример упрощенного использования метода ЕхеcuteXmlReader в котором просто отображаются данные (вместе с дескрипторами) из таблицы базы данных pubs. СУБД SQL Server передается показанная ниже SQL-команда Select, в которой явно указаны возвращаемые поля в виде XML-элементов.

"select * from stores for xml auto, elements"

В таком случае обработка разных типов XML-узлов упрощается, потому что достаточно найти только начальный и конечный узлы, а текстовые узлы между ними будут содержать фактические данные. Более надежная обработка XML-документа основана на конструкции Select Case, в которой учтены узлы всех типов. После щелчка на кнопке ExecuteXMLReader будет выполнен код из листинга 10.12 и на экране появится диалоговое окно, которое показано на рис. 10.2.

1 ... 74 75 76 77 78 79 80 81 82 ... 88
На этой странице вы можете бесплатно читать книгу Обработка баз данных на Visual Basic®.NET - Джеффри Мак-Манус бесплатно.

Оставить комментарий