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

на главную - закладки

Жанры

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

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

Шрифт:

4. В следующем диалоговом окне, Choose a Query Type (Выбрать тип запроса), можно выбрать тип запроса: Use SQL statements (Использовать команды SQL), Create new stored procedures (Создать новые хранимые процедуры) или Use existing stored procedures (Использовать существующие хранимые процедуры). В данном примере выберите предлагаемый по умолчанию тип запроса Use SQL Statements, хотя на практике бывает полезно использовать созданные программой-мастером хранимые процедуры.

5. В следующем диалоговом окне, Generate the SQL Statements (Создать SQL-команду), введите в текстовую область приведенную ниже команду SQL, которая будет использоваться объектом DataAdapter в качестве основы для других команд обновления.

SELECT FirstName, LastName, DepartmentID, Salary, ID FROM tblEmployee

В этом диалоговом окне есть еще две кнопки. После щелчка на кнопке Advanced Options (Дополнительные

возможности) отображается диалоговое окно Advanced SQL Generation Options (Дополнительные возможности для генерации команд SQL) с тремя параметрами. Первый параметр, Generate Insert, Update and Delete Statements (Создать команды вставки, обновления и удаления), указывает на необходимость создания команд вставки, обновления и удаления на основе указанной команды SQL (или нужно использовать объект DataAdapter только для наполнения данными набора данных DataSet). Второй параметр, Use Optimistic concurrency (Использовать оптимистическую обработку параллельно выполняемых команд), означает включение в команду SQL предложения WHERE для всех значений полей в обновленной записи. Это позволяет обнаружить изменения данной записи, внесенные другими пользователями в базе данных, так как в этом случае такая команда SQL будет отвергнута. Третий параметр, Refresh the Dataset (Обновить набор данных Dataset), позволяет добавить еще одну команду SELECT к создаваемым командам вставки и обновления данных для возвращения значений идентификационных полей, предлагаемых по умолчанию значений полей, а также вычисленных сервером значений. После щелчка на кнопке Query Builder (Конструктор запроса) отображается одноименное стандартное диалоговое окно для графического создания команды SELECT вместо непосредственного ввода ее в текстовой области диалогового окна Generate the SQL statements.

6. Щелкните на кнопке Next для отображения диалогового окна View Wizard Results (Просмотр результатов создания команды SQL с помощью программы-мастера).

7. Щелкните на кнопке Finish для применения указанных параметров объекта DataAdapter.

НА ЗАМЕТКУ

Сразу после создания компонента DataAdapter можно изменить его свойства и параметры с помощью окна свойств Properties или повторного запуска программы-мастера Data Adapter Configuration Wizard. Чтобы повторно запустить программу-мастер для уже имеющегося компонента DataAdapter, щелкните на нем правой кнопкой мыши и выберите в контекстном меню команду Configure Data Adapter (Конфигурировать адаптер данных). Его можно также запустить, выбрав уже имеющийся компонент DataAdapter под формой, а затем щелкнув на ссылке Configure Data Adapter (Конфигурировать адаптер данных) в той части окна свойств Properties, которая находится между списком свойств и их описанием.

Аналогично конструктору команд CommandBuilder, программа-мастер Data Adapter Configuration Wizard предназначена для создания команд для одной независимой таблицы базы данных. Однако эта программа содержит несколько параметров конфигурации, например для создания новых или использования существующих хранимых процедур, что позволяет очень легко и быстро создавать код приложения.

Теперь нужно связать объект DataAdapter, которому автоматически присвоено имя SqlDataAdpater1, с созданным кодом. Для этого нужно явно открыть созданное подключение SqlConnection1.

Подпрограмму btnLoad_Click нужно изменить таким образом, чтобы она вызывала подпрограмму LoadWizardCode вместо подпрограммы LoadExplicitCode. Далее нужно вызвать метод Fill вновь созданного объекта SqlDataAdpater1. Кроме того, для использования нового объекта SqlDataAdpater1 потребуется изменить код подпрограммы btnLoad_Click. Наконец, нужно создать код подпрограммы LoadWizardCode, которая предназначена для открытия нового подключения. Эти три подпрограммы показаны в листинге 6.6.

Листинг 6.6. Измененные и новые подпрограммы для использования нового объекта SqlDataAdapter1 в уже существующем приложении

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

 ByVal e As System.EventArgs) Handles btnLoad.Click

 dsEmployeeInfo = New DataSet

 LoadWizardCode

 ' Конфигурирование объекта-сетки 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

 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. создает форму для отображения и обновления данных о клиентах и их заказах. Для создания такой формы выполните перечисленные ниже действия.

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

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Мастер темных Арканов

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

Измена. Испорченная свадьба

Данич Дина
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Измена. Испорченная свадьба

Блуждающие огни

Панченко Андрей Алексеевич
1. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Блуждающие огни

Пышка и Герцог

Ордина Ирина
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Пышка и Герцог

Затерянные земли или Великий Поход

Михайлов Дем Алексеевич
8. Господство клана Неспящих
Фантастика:
фэнтези
рпг
7.89
рейтинг книги
Затерянные земли или Великий Поход

Адвокат Империи 2

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

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Невеста снежного демона

Ардова Алиса
Зимний бал в академии
Фантастика:
фэнтези
6.80
рейтинг книги
Невеста снежного демона

Законы Рода. Том 3

Flow Ascold
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Пипец Котенку! 2

Майерс Александр
2. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пипец Котенку! 2