Джеффри Мак-Манус - Обработка баз данных на 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
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
Try
' daEmployees.Update(dsEmployeeInfo, "Employees")
SqlDataAdapter1.Update(dsEmployeeInfo, "Employees")
Catch es As SqlException
MessageBox.Show(es.Message)
End Try
End Sub
Private Sub LoadWizardCode()
If SqlConnection1.State = ConnectionState.Closed Then
SqlConnection1.Open()
End If
End Sub
Для просмотра кода, автоматически созданного программой-мастером, нужно открыть раздел Windows Form Designer generated code (Код, сгенерированный конструктором Windows Form). Он напоминает код, созданный вручную в листинге 6.5.
В данном примере используются предлагаемые по умолчанию имена объектов SqlDataAdapter1 и SqlSelectCommand. Однако им можно присвоить более информативные имена в соответствии с принятым соглашением об именах. Во время создания компонентов их имена изменяются с помощью установки соответствующего значения для свойства (Name) в окне свойств Properties избранного компонента.
Для изменения имен отдельных объектов-команд (например, объектов SelectCommand и InsertCommand нужно выделить объект DataAdapter, открыть окно свойств Properties, найти нужную команду, раскрыть список ее свойств и указать соответствующее значение для ее свойства (Name). Аналогично можно изменить все остальные свойства объекта-команды.
Скомпонуйте проект DataSetCode и запустите полученное приложение для проверки его работоспособности. Как видите, программа-мастер Data Adapter Configuration Wizard позволяет с удивительной легкостью и быстротой создавать полностью функциональный код. Это усовершенствование смогут по достоинству оценить те программисты, которым раньше приходилось вручную создавать код для хранимых процедур.
Во время создания приложения можно воспользоваться еще одной функциональной возможностью компонента DataAdapter — инструментом предварительного просмотра данных. Для этого щелкните правой кнопкой мыши на объекте DataAdapter и выберите в контекстном меню команду Preview Data (Предварительный просмотр данных) или выберите объект DataAdapter и щелкните на ссылке Preview Data в той части окна свойств Properties, которая находится между списком свойств и их описанием. В списке Data adapters (Объекты – адаптеры данных) выберите нужный объект-адаптер и щелкните на кнопке Fill Dataset (Вставить данные в набор данных). На рис. 6.3 показан результат выполнения этих действий для объекта SqlDataAdapter в форме frmUpdates.

РИС. 6.З. Данные, вставленные в набор данных из таблицы tblEmployee с помощью диалогового окна предварительного просмотра данных Data Adapter Preview
Бизнес-ситуация 6.1: комбинация нескольких связанных таблиц
Как уже отмечалось, ни один из перечисленных выше методов указания команд обновления не позволяет обновлять данные сразу в нескольких таблицах, особенно если они связаны родительско-дочерним отношением. Значит ли это, что в модели ADO.NET не поддерживается обработка такой ситуации? Нет, это не так. В данной бизнес-ситуации для доказательства этого утверждения демонстрируются функциональные возможности модели ADO.NET, в частности применение пакета команд SQL для вставки данных из двух таблиц за счет одного обращения к серверу. Итак, программист компании Jones Novelties, Inc. создает форму для отображения и обновления данных о клиентах и их заказах. Для создания такой формы выполните перечисленные ниже действия.

РИС. 6.4. Расположение элементов управления в форме frmCustomersOrders
1. Запустите среду разработки Visual Studio .NET.
2. Создайте новый проект Visual Basic Windows Application.
3. Назовите проект BusinessCase6.
4. Укажите путь к файлам проекта.
5. Увеличьте размер формы Form1 и в окне Properties укажите значение frmCustomersOrders для свойства (Name) и значение Customers and Orders для свойства Text формы Form1.
6. Перетащите в форму кнопку и в окне Properties укажите значение bntFill для ее свойства (Name) и Fill для свойства Text; перетащите в форму кнопку и в окне Properties укажите значение bntUpdate для ее свойства (Name) и значение Update для свойства Text; перетащите в форму сетку данных и в окне Properties укажите значение grdCustomersOrders для ее свойства (Name).
7. Расположите все элементы управления, как показано на рис. 6.4.
В верхней части файла с исходным кодом вставьте следующие строки кода для импорта пространств имен System. Data и System.Data.SqlClient:
Imports System.Data
Imports System.Data.SqlClient
В тело определения класса для формы frmCustomersOrders включите код из листинга 6.7.
Private ds As DataSet
Private en As New SqlConnection( _
"server=localhost;uid=sa;database=Novelty")
Private Sub btnFill_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFill.Click
Dim da As New SqlDataAdapter()
grdCustomersOrders.DataSource = Nothing
ds = New DataSet()
' Создание команды SELECT.
da.SelectCommand = New SqlCommand()
da.SelectCommand.Connection = cn
da.SelectCommand.CommandType = CommandType.Text
da.SelectCommand.CommandText = _
"select * from tblCustomer; select * from tblOrder"
' Указание информативных имен для таблиц.
da.TableMappings.Add("Table", "Customers")
da.TableMappings.Add("Table1", "Orders")
' Загрузка данных, da.Fill(ds)
' Создание отношения.
ds.Relations.Add("Customer_Orders", _
ds.Tables("Customers").Columns("ID"), _
ds.Tables("Orders").Columns("CustomerID"))
' Отображение данных.
grdCustomersOrders.DataSource = ds
End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnUpdate.Click
' Создание адаптеров данных.
Dim daCustomers As New SqlDataAdapter( _
"select * from tblCustomer", en)
Dim daOrders As New SqlDataAdapter( _
"select * from tblOrder", en)
Dim cbCustomers As New SqlCommandBuilder(daCustomers)
Dim cbOrders As New SqlCommandBuilder(daOrders)
Try
' Внесение изменений в таблицы в "правильном"
' порядке (см. далее в тексте).
Dim ChangedTable As New DataTable()
' Удаление записей в дочерней таблице.
ChangedTable = _
ds.Tables("Orders").GetChanges(DataRowState.Deleted)
If Not ChangedTable Is Nothing Then
daOrders.Update(ChangedTable)
End If
' Все измененные записи в родительской таблице.
ChangedTable = ds.Tables("Customers").GetChanges
If Not ChangedTable Is Nothing Then
daCustomers.Update(ChangedTable)
End If
' Новые или измененные записи в дочерней таблице.
ChangedTable = _
ds.Tables("Orders").GetChanges(DataRowState.Added _
Интервал:
Закладка: