Чтение онлайн

на главную

Жанры

Обработка баз данных на Visual Basic®.NET

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

Шрифт:

РИС. 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.

Листинг 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 _

Or DataRowState.Modified)

If Not ChangedTable Is Nothing Then

daOrders.Update(ChangedTable)

End If

 Catch ex As Exception

MessageBox.Show(ex.Message)

 End Try

End Sub

Первая подпрограмма btnFill_Click считывает обе таблицы из базы данных посредством одного обращения к базе данных благодаря выполнению пакета команд SQL. В объекте CommandText отдельные команды пакета отделяются точкой с запятой.

Обратите внимание, что предлагаемые по умолчанию имена таблиц Table и Table1 в приведенных ниже строках кода отображаются на более информативные имена Customers и Orders.

' Указание информативных имен для таблиц.

da.TableMappings.Add("Table", "Customers")

da. TableMappings.Add("Table1", "Orders")

НА ЗАМЕТКУ

Более подробно способы отображения таблиц и полей рассматриваются в главе 7, "ADO.NET: дополнительные компоненты".

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

Возрождение Феникса. Том 2

Володин Григорий Григорьевич
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возрождение Феникса. Том 2

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Сумеречный Стрелок 4

Карелин Сергей Витальевич
4. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 4

Аномалия

Юнина Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Аномалия

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Диверсант

Вайс Александр
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Диверсант

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI

Дело Чести

Щукин Иван
5. Жизни Архимага
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дело Чести

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Авиатор: назад в СССР 10

Дорин Михаил
10. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 10

Курсант: Назад в СССР 11

Дамиров Рафаэль
11. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 11

Адепт. Том 1. Обучение

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Адепт. Том 1. Обучение