Вход/Регистрация
Обработка баз данных на Visual Basic®.NET
вернуться

Прайс Кевин Т.

Шрифт:
НА ЗАМЕТКУ

Даже после того как объект CommandBuilder автоматически сгенерировал команды вставки, обновления или удаления, соответствующие им свойства объекта DataAdapter не изменяются. Объект CommandBuilder скрывает сгенерированные команды, и доступ к ним можно получить с помощью методов GetInsertCommand, GetUpdateCommand и GetDeleteCommand.

Хотя конструктор команд CommandBuilder прост в применении, нужно учитывать его ограничения. Основное ограничение связано с тем, что нельзя проконтролировать выполняемые им действия, т.е. задать его конфигурацию. Он просто генерирует команды обновления на основе заданной команды SELECT без каких-либо параметров. Кроме того, он предназначен для выполнения команд по отношению к одной таблице базы данных. Иначе говоря, объект DataTable с результатами объединения таблиц не может использоваться объектом CommandBuilder. Более того, команды генерируются для одной таблицы без учета ее возможных связей с другими таблицами базы данных, что может привести к нарушению целостности данных при наличии между таблицами родительско-дочерних отношений.

Еще одно ограничение объекта CommandBuilder связано с тем, что он не способен генерировать команды обновления, если имя таблицы или поля содержит специальные символы, например пробел, точку или другие не буквенно-цифровые символы, даже если это имя заключено в кавычки. Однако он может работать с полностью квалифицированными именами таблиц в формате база_данных.владелец.таблица.

Чтобы извлекать и сохранять данные в базе данных с помощью объекта DataAdapter, создадим в проекте DataSetCode еще одну форму. Для этого выполните перечисленные ниже действия.

1. Создайте новую кнопку непосредственно под кнопкой DataAdapter Fill, перетаскивая ее из панели элементов управления. В окне свойств Properties укажите значение btnDataAdapterUpdate для свойства (Name) и значение DataAdapter Updates для свойства Text.

2. Создайте в проекте DataSetCode новую форму.

3. В окне свойств Properties укажите значение frmUpdates для свойства (Name) и значение DataAdapter Updates для свойства Text.

4. Увеличьте размер формы frmUpdates.

5. Создайте в правой части формы сетку данных DataGrid, перетаскивая ее из панели элементов управления.

6. В окне Properties укажите значение grdDataGrid для свойства (Name) сетки данных.

7. Увеличьте размер сетки данных, чтобы она занимала до 80% всей площади формы. 

8. В верхнем левом углу формы создайте кнопку, перетаскивая ее из панели элементов управления.

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

10. Создайте новую кнопку непосредственно под кнопкой btnLoad, перетаскивая ее из панели элементов управления.

11. В окне Properties укажите значение btnLoad для свойства (Name), значение Load для свойства Text и значение False для свойства Enabled этой кнопки.

12. В верхней части файла с кодом формы frmUpdates введите следующий код:

Imports System

Imports System.Data

Imports System.Data.SqlClient

13. Затем в код формы frmUpdates введите код из листинга 6.3.

Листинг 6.3. Применение объекта SqlCommandBuilder для автоматической генерации команд обновления

Private dsEmployeeInfo As DataSet

Private daEmployees As SqlDataAdapter

Private conn As New SqlConnection( _

 "server=localhost;uid=sa;pwd=;database=novelty")

 ' Применение объекта SqlCommandBuilder

 ' для автоматической генерации команд обновления.

Private cbEmployees As SqlCommandBuilder

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

 ByVal e As System.EventArgs) Handles btnLoad.Click

 dsEmployeeInfo = New DataSet

 LoadCommandBuilder

 ' Конфигурирование объекта-сетки DataGrid.

 Me.grdDataGrid.PreferredColumnWidth = 110

 Me.grdDataGrid.AllowSorting = True

 ' Вставка данных в объект DataSet.

 daEmployees.Fill(dsEmployeeInfo, "Employees")

 ' Присвоение объекта DataSet объекту DataGrid.

 Me.grdDataGrid.DataSource = _

dsEmployeeInfo.Tables("Employees")

 Me.btnUpdate.Enabled = True

End Sub

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

 ByVal e As System.EventArgs) Handles btnUpdate.Click

 daEmployees.Update(dsEmployeeInfo, "Employees")

End Sub

Private Sub LoadCommandBuilder

  • Читать дальше
  • 1
  • ...
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: