Visual Basic .NET на уроках информатики

Введение в ADO.NET

Разбить на страницы
Показывать лекцию целиком

В этой лекции вы узнаете, как:

  • использовать Server Explorer (Обозреватель серверов) для установки соединения с базой данных;
  • создавать адаптер данных, который извлекает из базы данных конкретную информацию;
  • создавать набор данных, представляющий в вашей программе одну или несколько таблиц базы данных;
  • использовать в форме Windows элементы управления TextBox, Label и Button для отображения информации из базы данных и элементов управления для навигации по базе данных.
  • В части 5 вы узнаете, как работать с информацией, хранящейся в базах данных. Вы познакомитесь с ADO.NET - новой парадигмой Microsoft для работы с информацией в базах данных с помощью комбинации кода программы и элементов управления форм Windows. Microsoft Visual Basic .NET был специально разработан для создания собственных интерфейсов - клиентов - для существующих баз данных, и если вы хотите использовать данные из других приложений, таких, как Microsoft Access, то можете немедленно браться за работу.

    В этой лекции вы сделаете первые шаги в программировании баз данных с помощью ADO.NET. Для установки соединения с базой данных Access из вашей системы вы будете использовать окно Server Explorer (Обозреватель серверов). Соединение настраивается с помощью диалогового окна Data Link Properties (Свойства соединения с данными). Для выбора таблицы данных используется адаптер данных. Вы создадите набор данных, основанный на этой таблице, который будет представлять в вашей программе часть базы данных. Выполнив эти базовые шаги, вы будете использовать элементы управления TextBox, Label и Button для отображения информации из базы данных в форме Windows.

    Что нового в Visual Basic .NET?

  • Модели доступа к данным Remote Data Objects (RDO - удаленные объекты данных) и ActiveX Data Objects (ADO - объекты данных ActiveX) заменены моделью доступа к данным ADO.NET. ADO.NET предлагает более широкий диапазон возможностей доступа к данным, чем его предшественники, и основана на новой технологии Microsoft для доступа к данным.
  • ADO.NET является стандартной моделью данных для всех программ Microsoft Visual Studio .NET, включая Microsoft Visual Basic .NET, Microsoft Visual C++ .NET, Microsoft J# .NET и Microsoft Visual C# .NET.
  • Известные элементы управления Data и ADO Data в Visual Basic .NET больше не доступны. Для отображения данных в формах обычно создается адаптер данных и набор данных, а затем добавляются элементы управления, которые могут отображать данные и позволяют пользователям производить переход с одной записи на другую.
  • В Visual Basic 6 информация из баз данных была представлена в программе с помощью объекта recordset (набор записей). В Visual Basic .NET информация из базы данных представлена объектом набора данных (dataset), который является независимым (локальным) образом таблицы базы данных, к которой вы обращаетесь.
  • Внутренний формат данных ADO.NET основан на XML, что облегчает использование существующих источников данных XML и использование ADO.NET в программах, разработанных для Веб.
  • В Visual Studio .NET 2003 ADO.NET получила дополнительные возможности соединения в виде .NET Framework Data Provider for ODBC и .NET Framework Data Provider for Oracle. Эти инструменты предоставляют доступ к провайдерам ODBC, а также, с помощью Oracle Call Interface (Интерфейса вызовов Oracle), к базам данных Oracle.
  • Программирование баз данных с использованием ADO.NET

    База данных - это организованная коллекция информации, хранящаяся в файле. Вы можете создавать мощные базы данных с помощью любых продуктов для создания баз данных, включая Microsoft Access, Microsoft FoxPro, Btrieve, Paradox, Oracle и Microsoft SQL Server. Вы также можете хранить и передавать информацию из базы данных с помощью XML (Extensible Markup Language - расширяемого языка разметки ) - формата файлов, разработанного для обмена структурированными данными через интернет и другие средства связи.

    Создание и управление базами данных стало для большинства корпораций, правительственных учреждений, некоммерческих организаций и большинства малых и средних компаний одной из важнейших задач. Большой объем данных - адреса клиентов, реквизиты производителей, балансы счетов, записи о сотрудниках, списки финансирующих организаций и другие перечни - стал источником жизненной силы мира бизнеса.

    Microsoft Visual Basic .NET предназначен для отображения, анализа и управления информацией в существующих базах данных. Хотя предыдущие версии Visual Basic также предоставляли такую возможность, Visual Basic .NET предлагает новую модель данных, которая называется ADO.NET и предоставляет доступ к еще большему количеству форматов баз данных. В частности, ADO.NET разработан для использования в интернете, что означает, что он использует один и тот же метод доступа к локальным, клиент-серверным и размещенным в интернете источникам данных. Microsoft сделала XML - стандарт, определенный организацией World Wide Web Consortium - внутренним форматом данных ADO.NET. Использование XML для этой цели делает ADO.NET более легким в использовании с существующими источниками данных в интернете, и облегчает написание поставщиками программного обеспечения адаптеров данных которые преобразуют внутренние форматы баз данных в формат, совместимый с ADO.NET.

    Терминология баз данных

    При работе с базами данных и ADO.NET прежде всего определим основные термины. Поля - это категории информации, хранящейся в базе данных. В обычной базе данных поля могут включать имена покупателей, адреса, номера телефонов и комментарии. Вся информация о конкретном покупателе или компании называется записью. При создании баз данных информация вводится в таблицы, состоящие из полей и записей. Записи соответствуют строкам таблицы, а поля соответствуют столбцам, как показано ниже.

    В ADO.NET для получения и изменения информации в базе данных используются различные объекты. На следующей иллюстрации показана структура подхода, который будет более подробно описан в этой лекции.

    Вначале устанавливается соединение, которое определяет информацию о соединении для базы данных. Далее создается адаптер данных, который управляет получением данных из базы данных и обратной отправкой изменений в данных. Затем создается набор данных, который является представлением одной или нескольких таблиц, с которыми вы планируете работать в вашей программе. (Вы управляете не самими данными, а только их копией.) Затем информация из набора данных может быть связана с элементами управления формы.

    Работа с базой данных Access

    В следующих разделах вы узнаете, как использовать в Visual Basic .NET технологию доступа к данным ADO.NET. Вы начнете с использования Server Explorer (Обозревателя серверов) для установки соединения с базой данных с именем Students.mdb, которую я создал в Microsoft Access. Students.mdb содержит различные таблицы академической информации, которая будет полезна для учителя, ведущего учет успеваемости студентов, или школьного администратора, составляющего расписание занятий, распределяющего аудитории и т.д. Вы узнаете, как создавать набор данных на основе таблицы информации из базы данных Students, и будете отображать эту информацию в форме Windows. Эти навыки помогут вам при работе с собственными проектами баз данных.

    Совет. Хотя пример в этой лекции использует базу данных Microsoft Access, вам не требуется устанавливать Microsoft Access. Visual Studio и ADO.NET включают необходимую поддержку для работы с форматом файлов Access, а также других форматов.

    Установка соединения с базой данных

  • Запустите Visual Studio и создайте в папке c:\vbnet03sbs\Гл.19 новый проект с именем My ADO Form. В среде разработки появится новый проект.
  • В меню View щелкните на команде Server Explorer (Обозреватель серверов). В среде разработки появится окно Server Explorer (Обозреватель серверов), показанное ниже.

    Совет. В зависимости от вашей конфигурации и версии Visual Studio, кнопка Connect To Server (Соединение с сервером) и узел Servers (Серверы) могут не отображаться. Для выполнения шагов, описанных в этой лекции, эти опции не требуются.

    Server Explorer (Обозреватель серверов) - это графический инструмент, который позволяет устанавливать соединения с локальными, клиент-серверными или размещенными в интернете источниками данных. С помощью Server Explorer (Обозревателя серверов) можно просматривать структуру таблиц баз данных и видеть атрибуты таблиц, полей и записей в базе данных. Вы также можете регистрироваться на серверах и изучать базы данных и системные службы, которые они предоставляют. Наконец, можно перетащить компоненты баз данных - или узлы - из Server Explorer (Обозревателя серверов) в конструкторы Visual Studio .NET, такие, как Конструктор Windows Forms. Этот процесс создает новые компоненты данных, которые настроены на использование выбранного вами элемента базы данных.

  • Щелкните в Обозревателе серверов на кнопке Connect To Database (Подключиться к базе данных). Прежде, чем вы сможете работать с информацией из базы данных, с ней необходимо установить соединение. Кнопка Connect To Database (Подключиться к базе данных) начинает этот процесс, открывая диалоговое окно Data Link Properties, которое позволяет вам указать информацию о формате базы данных, ее расположении, пароле и другую информацию.

    Совет. Вы также можете открыть диалоговое окно Data Link Properties (Свойства соединения с данными), щелкнув на команде Connect To Database (Подключиться к базе данных) в меню Tools (Сервис).
  • Щелкните на закладке Provider этого диалогового окна. Провайдер (или управляемый провайдер) - это низкоуровневая компонента базы данных, которая знает, как соединяться с базой данных и получать из нее данные. Двумя наиболее популярными типами провайдеров, предоставляемых Visual Studio .NET, являются OLE DB и SQL, но также имеются провайдеры, разработанные другими компаниями и работающие с большинством популярных форматов баз данных. В этом примере вы будете использовать провайдер Microsoft Jet 4.0 OLE DB - компоненту, разработанную для соединения с базами данных Microsoft Access.
  • Щелкните на закладке Provider на Microsoft Jet 4.0 OLE DB Provider. Ваш экран будет выглядеть примерно так.

  • Щелкните на кнопке Next, чтобы отобразить закладку Connection диалогового окна Data Link Properties. Так как вы выбрали формат Jet OLE DB, который является внутренним форматом Microsoft Access, закладка Connection будет настроена на получение информации об имени, расположении и данных о регистрации пользователя для базы данных Access.
  • Щелкните на кнопке многоточия рядом с полем Select Or Enter A Database Name (Выберите или введите имя базы данных), выберите базу данных Students.mdb, расположенную в папке c:\vbnet03sbs\ Гл.19, а затем щелкните на Открыть. Ваш экран будет выглядеть примерно так.

    Совет. Вы также можете указать вашу собственную базу данных, но вам потребуется изменить шаги, приведенные в этой лекции, в соответствии со структурой вашей базы данных.
  • Щелкните на кнопке Test Connection (Проверить соединение) на закладке Connection. Visual Studio попытается установить соединение с базой данных Students.mdb. Если в окне сообщения появится сообщение "Test Connection Succeeded" (Тест соединения успешно завершен), вы будете знать, что провайдер работает правильно, и что ваша база данных имеет корректный и правильно распознанный формат. Если Visual Studio обнаружит в этом месте ошибку, проверьте, что вы используете правильный провайдер, и что вы выбрали файл базы данных, а затем снова проверьте соединение.
  • Чтобы продолжить, щелкните на кнопке OK окна сообщения Test Connection Succeeded, а затем щелкните на OK в диалоговом окне Data Link Properties. Visual Studio создаст соединение и добавит в Server Explorer (Обозреватель серверов) узел, представляющий вашу базу данных.
  • Откройте в Server Explorer (Обозревателе серверов) узел Data Connections (Соединения с данными), затем узел ACCESS, и, наконец, узел Tables (Таблицы). Чтобы открыть в Server Explorer (Обозревателе серверов) узлы, щелкните на знаках "плюс" (+), которые работают как переключатели. В Server Explorer (Обозревателе серверов) появится структура базы данных Students, показанная ниже.

    Server Explorer (Обозреватель серверов) предоставляет огромное преимущество: он позволяет видеть графическое представление того, как организована база данных, так что вы можете немедленно использовать ее таблицы, поля и другие объекты.

  • Создание адаптера данных

    Теперь, когда у вас есть действующее соединение с базой данных, вы должны создать адаптер данных для получения конкретной информации из этой базы данных, которая будет использоваться в вашей программе. Адаптер данных определяет конкретную информацию, которую вы используете, и служит как основа для объекта набора данных (dataset), которые вы используете в вашей программе. Создание адаптера данных - обязательный шаг для использования набора данных, так как некоторые базы данных сильно структурированы и имеют множество таблиц - гораздо больше, чем требуется использовать в одной программе. Вы можете рассматривать адаптер данных как некий фильтр данных.

    Visual Studio предоставляет несколько механизмов для создания в программе адаптеров данных. Простейшим способом является перетаскивание значков таблицы из Server Explorer (Обозревателя серверов) в Windows Forms Designer (Конструктор Windows Forms). (Эта процедура создает объект адаптера данных в области компонент, расположенной прямо под формой.) Однако в следующем упражнении показано, как создавать адаптер данных с помощью второго метода - инструмента, который называется Data Adapter Configuration Wizard (Мастер конфигурации адаптера данных). Этот инструмент прост в использовании, и позволяет тонко настроить ваш набор данных с помощью написания оператора SQL SELECT. Вы запускаете этот мастер, перетащив в форму элемент управления OleDbDataAdapter с закладки Data окна Области элементов. Теперь попробуйте использовать этот второй метод.

    Использование элемента управления OleDbDataAdapter

  • Откройте Область элементов, а затем щелкните на закладке Data. Закладка Data содержит элементы управления, которые в программах помогают осуществлять доступ к данным. Если вы знакомы с Visual Basic 6, то вы увидите, что элементы управления Data и ADO Data больше не поддерживаются. Вместо этого вы осуществляете доступ к данным, добавляя в область компонент вашей программы объект адаптера данных и объект набора данных.

    Совет. Для установки соединения между вашей программой и источником данных также могут использоваться элементы управления OleDbConnection и SqlConnection. Однако в этой лекции вы уже создали соединение с базой данных с помощью Server Explorer (Обозревателя серверов), так что использование элемента управления OleDbConnection теперь не требуется.
  • Перетащите с закладки Data окна Область элементов в форму элемент управления OleDbDataAdapter. Элемент управления OleDbDataAdapter разработан для соединения с базами данных Access/Jet и многими другими популярными форматами баз данных. Когда вы перетаскиваете этот элемент управления в форму, Visual Studio запускает Data Adapter Configuration Wizard (Мастер конфигурации адаптера данных).
  • Прочтите вводную информацию относительно адаптеров данных, а затем щелкните на Next (Далее). Появится второе диалоговое окно мастера, которое запрашивает имя адаптера данных. Ваш экран должен выглядеть примерно так.

    Так как вы уже создали соединение с базой данных Access с помощью Server Explorer (Обозреватель серверов), в раскрывающемся списке появится это соединение. Если бы вы не создали соединение или захотели создать новое, вы могли бы сделать это сейчас, щелкнув на кнопке New Connection (Новое соединение).

  • Чтобы продолжить настраивать адаптер данных, щелкните на Next (Далее). Вы увидите следующее диалоговое окно, показанное на рисунке вверху следующей страницы, спрашивающее, как адаптер данных должен осуществлять доступ к данным из базы данных:

    Первая опция - Use SQL Statements (Использовать операторы SQL) - дает возможность создать оператор SQL SELECT, который будет фильтровать данные, которые вы планируете использовать. Для пользователей Visual Basic, которые знакомы с программированием баз данных, написанием запросов Access или использованием SQL Server, создание оператора SQL SELECT будет достаточно простой задачей. Однако если вы не знакомы с этим синтаксисом, вы можете использовать инструмент Query Builder (Построитель запросов), чтобы наглядно сгенерировать правильный оператор SELECT. В следующих шагах мы будем использовать Query Builder (Построитель запросов).

  • Чтобы принять опцию Use SQL Statements (Использовать операторы SQL), щелкните на Next (Далее). Вы увидите следующее диалоговое окно, которое запрашивает у вас оператор SQL SELECT.

  • Чтобы графически создать оператор SELECT, щелкните на кнопке Query Builder (Построитель запросов). Появится диалоговое окно Add Table (Добавление таблицы), показанное ниже.

    Чтобы создать оператор SELECT, выберете одну или несколько таблиц, содержащихся в базе данных Students.mdb.

  • Щелкните на Instructors, затем на Add (Добавить), а затем на Close (Закрыть). Visual Studio отображает графический инструмент Query Builder (Построитель запросов), который содержит представление таблицы Instructors.
  • В таблице Instructor щелкните на флажках рядом с полями Instructor и InstructorID. Query Builder (Построитель запросов) создаст оператор Query Builder (Построитель запросов), который извлекает из таблицы Instructors поля Instructor и InstructorID, как показано на рисунке вверху следующей страницы.

    В этом примере вы просто извлекаете из таблицы два поля, но вы легко можете создать оператор SQL SELECT, который извлекает несколько полей из одной или сразу нескольких таблиц. Поле InstructorID показано жирным, так как это действующий первичный ключ таблицы базы данных.

  • Чтобы завершить создание оператора SELECT, щелкните на OK. Снова появится диалоговое окно Generate The SQL Statements (Создание инструкций SQL), содержащее ваш оператор SELECT. Запомните этот простой синтаксис - в будущем его можно использовать для написания ваших собственных операторов SELECT без использования Query Builder (Построитель запросов).

  • Щелкните на кнопке Finish (Готово). Если вы увидите диалоговое окно, запрашивающее у вас информацию о пароле, щелкните на Don't Include Password (Не включать пароль). Visual Studio добавляет в область компонент под вашей формой завершенный адаптер данных и представление объекта OleDbConnection. Каждый объект определяется уникальным номером, так как у вас в программе может быть более одного соединения с данными или несколько адаптеров данных. Ваш экран выглядит примерно так, как показано на рисунке вверху следующей страницы.

  • Работа с наборами данных

    Следующим шагом при программировании базы данных ADO.NET является создание объекта, представляющего данные, которые вы хотите использовать в вашей программе. Этот объект называется набором данных, и он является представлением данных, получаемых через объект соединения с данными и извлекаемых объектом адаптера данных. Набор данных может содержать информацию из одной или нескольких таблиц базы данных, и это содержимое может также быть результатом работы оператора SQL SELECT, такого, как вы только что использовали для извлечения данных из базы Students.mdb. В отличие от наборов записей (recordsets) - механизмов доступа к данным, присутствовавших в предыдущих версиях Visual Basic - наборы данных только представляют данные из базы данных. Когда вы изменяете набор данных, вы не изменяете таблиц самой базы данных до тех пор, пока не запишете изменения обратно в эту базу данных.

    В следующем упражнении вы создадите набор данных, который представляет поле Instructor из таблицы Instructors базы данных Students.mdb. Создание набора данных при наличии готового и правильно настроенного адаптера данных очень просто.

    Создание набора данных для хранения данных Instructor

  • Чтобы убедиться, что форма активна, щелкните на ней. Если форма будет не активна, команда из меню Data (Данные), которая нужна вам для создания набора данных, будет недоступна.
  • Щелкните на команде Generate Dataset (Создать dataset) в меню Data (Данные). Появится диалоговое окно Generate Dataset (Создать dataset).
  • В поле New (Создать) установите имя нового набора данных равным DsInstructors.
  • Проверьте, что флажок Add This Dataset To The Designer (Добавить этот dataset в конструктор) установлен так, что Visual Studio добавить новый набор данных в область компонент. Ваше диалоговое окно будет выглядеть так.

  • Чтобы создать набор данных для поля Instructor и добавить его в ваш проект, щелкните на OK. Набор данных появится в области компонент, как показано ниже.

    Visual Studio также добавит в Solution Explorer (Обозреватель решений) поле с именем DsInstructors.xsd, представляющее схему базы данных, которую вы только что добавили в ваш проект. Эта схема является XML-файлом, который описывает таблицы, поля, типы данных и другие элементы набора данных. Типизированные наборы данных имеют ассоциированные с ними файлы схем (.xsd), а нетипизированные таких файлов не имеют. Преимущество типизированных наборов данных с файлами схем в том, что они позволяют использовать функцию автозавершения операторов при наборе в Редакторе кода, и дают информацию об используемых полях и таблицах.

  • Теперь, когда вы создали набор данных, можно вывести в вашей форме записи из таблицы Instructors с помощью связанных элементов управления.

    Использование связанных элементов управления для отображения в форме информации из базы данных

    Это самая интересная часть, но как это можно сделать? Вместо того чтобы воссоздавать в вашей форме таблицу базы данных Access, Visual Basic позволяет отображать только те поля и записи, которые вы хотите увидеть - можете предоставить вашим пользователям возможность увидеть всю таблицу информации из базы данных, а можете показать только те поля, которые вы хотите. В дополнение к этому можно предоставить механизм навигации так, что пользователи смогут просматривать все записи в базе данных, а можно отображать только конкретные записи. Наконец, можно позволить пользователям изменять или даже удалять информацию из базы данных, а можете ограничить их действия только просмотром записей из базы данных. Короче, Visual Basic позволяет создавать программу для просмотра базы данных - или внешний интерфейс - который предоставляет только ту информацию и те возможности доступа к данным, которые вы хотите предоставить своим пользователям. Хотя я этого и не говорил, большинство элементов управления на закладке Windows Forms окна Область элементов имеют встроенную возможность отображать в форме информацию из базы данных. В терминологии Visual Basic эти элементы управления обычно называются связанными элементами управления. Элемент управления называется связанным с источником данных, когда его свойство DataBindings содержит одно из полей набора данных. После установки соединения вы можете отображать информацию из базы данных с помощью методов и свойств, имеющихся в объектной модели ADO.NET. Элементы управления с закладки Windows Forms окна Области элементов, которые могут отображать информацию из базы данных, включают TextBox, ComboBox, ListBox, CheckBox, RadioButton, DataGrid и PictureBox.

    Совет. За дополнительной информацией по использованию элемента управления DataGrid для отображения информации из базы данных обратитесь к лекции 20.

    В следующем упражнении показано, как для отображения информации из таблицы Instructors базы данных Students.mdb вы можете добавить в вашу форму объект текстового поля.

    Использование объекта TextBox для отображения данных

  • Используйте элемент управления TextBox и нарисуйте в центре формы объект текстового поля. Сделайте этот объект текстового поля достаточно широким, чтобы отображать имена и фамилии гипотетических инструкторов из базы данных Students.mdb.
  • С помощью элемента управления Label слева от объекта текстового поля нарисуйте объект метки.
  • Используя элемент управления Button, нарисуйте в нижнем левом углу формы одну кнопку.
  • Установите для объектов формы следующие свойства:

    Объект Свойство Установка
    TextBox1 Name txtInstructor
    Text пустой (empty)
    Label1 Name lblInstructor
    Text Инструктор
    TextAlign MiddleRight
    Button1 Name btnLoad
    Text Загрузка данных
    Form1 Text Форма ADO

    Ваша форма должна выглядеть примерно так, как показано на рисунке вверху следующей страницы. Теперь вы должны связать поле Instructor с объектом текстового поля (txtInstructor).

  • Щелкните на объекте текстового поля формы, а затем откройте окно Properties. Я рекомендую открепить окно Properties (Свойства) и расширить его так, чтобы было достаточно места для просмотра структуры таблицы Instructors базы данных.
  • Откройте категорию DataBindings, щелкните на свойстве Text, а затем щелкните на стрелке раскрывающегося списка. Окно Properties (Свойства) отобразит список источников данных, с которыми вы можете связать ваше текстовое поле. Если вы выполнили предыдущее упражнение, то увидите в раскрывшемся списке объект набора данных с именем DsInstructors1.
  • Щелкните на знаке "плюс" (+), чтобы раскрыть набор данных DsInstructors1, а затем раскройте таблицу Instructors, содержащуюся в нем. В окне Properties (Свойства) вы увидите следующую структуру базы данных (см. рис. вверху следующей страницы).

    Instructors - это имя таблицы из базы данных Students.mdb, а Instructor - это поле из этой таблицы, содержащее имена учителей, которые работают в гипотетическом колледже.

  • Чтобы выбрать поле Instructor в качестве поля, которое будет отображаться в текстовом поле txtInstructor, щелкните на нем мышью. Убедитесь, что вы щелкнули на самом тексте "Instructor", а не на значке; в противном случае поле Instructor не будет выделено. В свойстве Text окна Properties (Свойства) появятся имена набора данных, таблицы и поля. Теперь можно написать код программы, который загружает данные в набор данных и отображает их в объекте текстового поля.
  • Восстановите прежнее состояние окна Properties (Свойства), сделайте двойной щелчок мышью на кнопке Загрузка данных, а затем введите в процедуре события btnLoad_Click, открывшейся в Редакторе кода, следующий код программы:

    DsInstructors1.Clear()
    OleDbDataAdapter1.Fill(DsInstructors1)

    Вы должны заполнить адаптер данных данными вручную с помощью метода Fill, который затем загружает информацию из определенного вами ранее набора данных в объект текстового поля. Хотя это может показаться дополнительным шагом, это легко делается с помощью двух строчек кода программы. В этом контексте метод Clear необходим для того, чтобы к набору данных не добавлялись записи, полученные с помощью предыдущих запросов к базе данных. Использование ADO.NET иногда требует дополнительных шагов, которые не требовались при использовании ADO и Visual Basic.

    Совет. С целью демонстрации я поместил эти две строки в процедуру события кнопки, но можно легко поместить их в процедуру события Form1_Load, чтобы объект текстового поля заполнялся при открытии формы на экране.
  • Чтобы запустить программу ADO Form, щелкните на кнопке Start (Начать). Программа ADO Form запустится на выполнение в среде разработки. Заметьте, что в настоящий момент в текстовом поле нет имени инструктора.
  • Щелкните на кнопке Загрузка данных. Через мгновение в текстовом поле появится имя "Delamarco, Stefan", как показано на следующей иллюстрации. Это первое имя инструктора в базе данных Students.

  • Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы. Вы успешно вывели на экран имя инструктора из базы данных Students.
  • Создание элементов управления для навигации

    Сейчас программа ADO Form отображает имя первого инструктора из базы данных Students.mdb. Но как просмотреть список имен инструкторов, и как переходить к первой или последней записи базы данных? ADO.NET хранит информацию о текущей записи и общем числе записей с помощью объекта, который называется CurrencyManager. Для каждого набора данных существует объект CurrencyManager, и каждая форма Windows имеет объект BindingContext, который хранит все объекты CurrencyManager формы.

    В следующем упражнении вы создадите в программе ADO Form объекты кнопок с именами Первая запись, Последняя запись, Предыдущая запись и Следующая запись, которые предоставляют пользователю базовые возможности навигации по базе данных. После того, как вы создадите в форме эти кнопки, вы добавите в каждую процедуру события Click этих кнопок код программы, который с помощью объекта BindingContext, набора данных DsInstructors1 и таблицы Instructors отображает соответствующую запись базы данных. Вы также можете настроить этот код программы так, чтобы он соответствовал вашим нуждам, просто заменив имена набора данных и таблицы на значения из вашей собственной структуры базы данных.

    Добавление кнопок Первая запись, Последняя запись, Предыдущая запись и Следующая запись

  • Отобразите интерфейс пользователя ADO Form, а затем используйте элемент управления Button и создайте в вашей форме четыре объекта кнопок. Добавьте два объекта кнопок в центре формы, а два в нижней части формы.
  • Установите для этих объектов кнопок следующие свойства:

    Объект Свойство Установка
    Button1 Name btnFirst
    Text Первая запись
    Button2 Name btnLast
    Text Последняя запись
    Button3 Name btnPrev
    Text Предыдущая запись
    Button4 Name btnNext
    Text Следующая запись

    Ваша форма должна выглядеть примерно так.

    Теперь добавьте код программы, который добавляет навигационные функции для кнопок.

  • Сделайте двойной щелчок мышью на кнопке Первая запись. В Редакторе кода появится процедура события btnFirst_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position = 0

    Эта запись предназначена для использования объекта BindingContext для отображения первой записи из набора данных DsInstructors1 таблицы Instructors. Этот оператор программы устанавливает свойство Position на значение 0, что приводит к изменению текущей записи в наборе данных на первую запись. (Аналогично массивам и коллекциям, наборы данных начинают нумерацию записей с 0.) Также обратите внимание на использование объекта Me, который указывает на объект BindingContext для текущей формы.

  • Отобразите форму, а затем дважды щелкните мышью на кнопке Последняя запись. В Редакторе кода появится процедура события btnLast_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position = _
    Me.BindingContext(DsInstructors1, "Instructors").Count - 1

    Этот длинный оператор (разделенный на две строки) приводит к тому, что в форме отображается последняя запись из набора данных. Это вариант предыдущего оператора BindingContext, но вместо установки свойства Position на значение 0, этот оператор устанавливает текущую запись на значение, хранящееся в свойстве Count минус 1. Count - это общее число записей в наборе данных. Единица вычитается из-за того, что нумерация записей начинается с 0.

  • Отобразите форму, а затем сделайте двойной щелчок мышью на кнопке Предыдущая запись. В Редакторе кода появится процедура события btnPrev_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position -= 1

    Этот оператор отображает предыдущую запись из набора данных, вычитая 1 из текущей записи. Хотя этот оператор не имеет смысла, если текущая запись уже равна 0, она не приведет к возникновению синтаксической ошибки - ADO.NET не позволит текущей записи иметь номер меньше 0. Обратите внимание на использование в этом операторе синтаксиса -= для декремента свойства Position. Это сокращенная математическая запись, которую я впервые представил при декрементировании переменных в лекции 5.

  • Отобразите форму, а затем дважды щелкните мышью на кнопке Следующая запись. В Редакторе кода появится процедура события btnNext_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position += 1

    Этот оператор инкрементирует свойство Position для отображения следующей записи из набора данных. Заметьте, что для обновления свойства Position с помощью минимального количества кода программы я использовал здесь математический оператор +=. Теперь вы запустите обновленную программу и протестируете кнопки навигации, только что созданные вами.

  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  • Чтобы заполнить текстовое поле формы именем первого инструктора из набора данных, щелкните на кнопке Загрузка данных.
  • Чтобы отобразить следующую запись из базы данных, щелкните на кнопке Следующая запись. Ваша форма будет выглядеть примерно так.

  • Чтобы снова отобразить первую запись, щелкните на кнопке Предыдущая запись.
  • Чтобы просмотреть несколько имен инструкторов из списка, щелкните на кнопке Следующая запись несколько раз
  • Чтобы отобразить первую запись набора данных, щелкните на кнопке Первая запись.
  • Чтобы отобразить последнюю запись набора данных, щелкните на кнопке Последняя запись. Обратите внимание, что программа не выдает ошибки, если вы отображаете последнюю запись, а затем щелкаете на Следующая запись. Кроме того, программа не выдает ошибки, если вы отображаете первую запись, а затем щелкаете на Предыдущая запись. Эта обработка ошибок встроена в объект BindingContext.
  • Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы.
  • Следующий шаг: отображение текущей позиции записи

    В дополнение к предоставлению в вашей форме базовых инструментов для навигации вы можете предоставить некую индикацию текущего номера записи, а также общего числа записей в наборе данных. Вы можете сделать это, создав в форме объект метки, который будет отображать текущую позицию. Значение текущей позиции хранится в свойстве Position объекта BindingContext. Если вы хотите обновлять текущую позицию каждый раз, когда используются кнопки навигации, создайте в верхней части кода программы формы процедуру, которая будет определять текущую позицию и отображать ее в форме.

    В следующем упражнении вы создадите процедуру с именем Count, которая объявляет две переменные, хранящие общее число записей и номер текущей записи, а затем отображает эту информацию с помощью свойства Text новой метки с именем lblCount.

    Создание процедуры Count для отображения информации о текущей записи

  • Отобразите форму, а затем используйте элемент управления Label и нарисуйте прямо под текстовым полем широкую метку.
  • Установите свойство Name этой метки равным "lblCount".
  • Установите свойство Text этой метки равным "Запись 0 из 0".
  • Чтобы открыть Редактор кода, щелкните в Обозревателе решений на кнопке View Code (Просмотреть код).
  • Прокрутите окно Редактор кода в самый верх и поместите курсор под тeгом "Windows Form Designer generated code" ("Код, автоматически созданный конструктором форм Windows"). Когда мы размещаем процедуру в классе Form, ее можно вызвать из любого места кода формы.
  • Введите в процедуре Count следующий код программы. Обратите внимание, что Visual Basic автоматически добавляет оператор End Sub.

    Private Sub Count()
    	Dim Records, Current As Integer
    	Records = Me.BindingContext( _
    	DsInstructors1, "Instructors").Count
    	Current = Me.BindingContext( _
    	DsInstructors1, "Instructors").Position + 1
    	lblCount.Text = "Запись "  Current.ToString  " из "  _
    	Records.ToString
    End Sub

    Процедура Count присваивает значение свойства Count целочисленной переменной Records, а значение свойства Position плюс 1 присваивает целочисленной переменной Current. К значению Position добавляется 1 из-за того, что список записей нумеруется с 0 (как массивы и коллекции) - интересный момент для программистов, но не имеющий смысла для пользователя. Наконец, переменные Records и Current преобразуются в строки и вместе с форматирующей информацией копируются в свойство Text объекта lblCount. Текст в этой метке будет иметь следующий формат: "Запись x из y", где x - это значение переменной Current, а y - это значение переменной Records. Теперь в каждую из пяти процедур событий кнопок программы ADO Form добавьте вызов процедуры Count. Это важно, так как каждая кнопка выполняет действие, связанное с навигацией, поэтому метку следует обновлять каждый раз, когда меняется значение свойства Position.

  • Прокрутите окно вниз до процедуры события btnFirst_Click, добавьте в верхней части процедуры пустую строку и введите следующий вызов процедуры:

    Count()

    Ваша процедура события будет теперь выглядеть так (хотя первая строка может быть не разделена на две):

    Private Sub btnFirst_Click(ByVal sender As System.Object, _
    	ByVal e As System.EventArgs) Handles btnFirst.Click
    	Me.BindingContext(DsInstructors1, "Instructors").Position = 0
    	Count()
    End Sub
  • Повторите этот шаг, добавив вызов процедуры Count в каждую из следующих процедур событий вашей программы: btnLast_Click, btnPrev_Click, btnNext_Click и btnLoad_Click. Теперь запустите программу и посмотрите, как работает статистика текущей записи.
  • Чтобы запустить программу, щелкните на кнопке Start (Начать).

    Примечание. Готовая программа ADO Form лежит в папке c:\vbnet03sbs\Гл.19\ado form.
  • Щелкните на кнопке Загрузка данных. Форма заполнится данными и появится имя первого инструктора. В дополнение к этому под текстовым полем в только что созданной вами новой метке появится текст Запись 1 из 9. Ваша форма должна выглядеть примерно так.

  • Чтобы посмотреть, как меняется статистика текущей записи при просмотре записей инструкторов из набора данных, щелкните несколько раз на кнопке Следующая запись.
  • Щелкните на кнопках Предыдущая запись, Первая запись и Последняя запись, чтобы убедиться, что процедура Count работает также и для этих навигационных кнопок.
  • Чтобы остановить приложение ADO Form, щелкните на кнопке Закрыть в строке заголовка программы.
  • Вы написали на Visual Basic и ADO.NET вашу первую оболочку для базы данных. В этом примере вы использовали базу данных Microsoft Access. Однако вы обнаружите, что базовые методики доступа к данным других типов, включая базы данных SQL Server и базы данных, хранящихся в удаленных хранилищах, очень похожи на эту. Причина этой одинаковости заключается в распределенной архитектуре ADO.NET, которая использует один и тот же механизм для установления соединения, настройки адаптеров данных и создания наборов данных.

    Хотя для установки базового соединения и настройки в сессии ADO.NET требуется выполнить несколько шагов, преимущество этой предварительной работы состоит в том, что манипуляции с информацией из базы данных становятся универсальным процессом. Это верно даже тогда, когда используемые вами данные получаются из удаленного источника или являются результатом объединения различных таблиц базы данных или форматов данных. В следующей лекции вы продолжите работать с информацией из базы данных, и научитесь как использовать элемент управления DataGrid для одновременной работы с несколькими записями базы данных.

    Доступ к данным в среде веб-форм

    Техники доступа к данным, обсуждаемые в этой лекции, были разработаны для использования в среде форм Windows - базовой среде Visual Studio, которую вы использовали для создания большинства программ из этой книги. Однако вы также можете использовать техники программирования ADO.NET в среде веб-форм, что позволяет совместно использовать источники данных из интернета и писать оболочки для баз данных, которые доступны через веб-браузер. Большинство различий между средами форм Windows и веб-форм описано в лекции 22 . За дополнительной информацией по написанию приложений баз данных в среде веб-форм обратитесь к справочной системе Visual Basic.

    Краткая справка по лекции 19

    Чтобы Сделайте следующее
    Установить соединение с базой данных Щелкните на команде Server Explorer (Обозреватель серверов) в меню View (Вид), далее на кнопке Connect To Database (Подключиться к базе данных) и с помощью диалогового окна Data Link Properties (Свойства соединения с данными) укажите базу данных, к которой вы хотите открыть доступ.
    Создать адаптер данных Щелкните на закладке Data (Данные) в окне Toolbox (Область элементов), перетащите в форму элемент управления OleDbDataAdapter или элемент управления SqlDataAdapter, а затем укажите в Data Adapter Configuration Wizard (Мастере конфигурации адаптера данных) информацию о базе данных, которую вы хотите использовать.
    Создать набор данных Щелкните на команде Generate Dataset (Создать dataset) в меню Data (Данные), укажите имя набора данных, а затем убедитесь, что установлен флажок Add This Dataset To The Designer (Добавить этот dataset в конструктор).
    Связать элемент управления формы Windows с активным набором данных Добавьте в форму подходящий элемент управления, откройте окно Properties (Свойства), а затем установите свойства категории DataBinding этого элемента управления равными требуемому полю (столбцу) из набора данных. (Одним из наиболее полезных свойств категории DataBinding является Text.)
    Заполнить набор данных данными и вывести их в связанном элементе управления в форме Windows

    Поместите в процедуру события, которая должна заполнять элементы управления формы, следующий оператор программы. (Замените имена адаптера и набора данных вашими собственными.)

    OleDbDataAdapter1.Fill(DsInstructors1)
    Добавить в форму Windows элементы управления для навигации

    Создайте в форме объекты кнопок и добавьте в каждую из их процедур события Click операторы, которые обновляют свойство Position объекта BindingContext. Например, следующий оператор программы отображает следующую запись из таблицы с именем Instructors, находящейся в наборе данных DsInstructors1:

    Me.BindingContext(DsInstructors1, _
    	"Instructors").Position += 1
    Страницы:

    В этой лекции вы узнаете, как:

  • использовать Server Explorer (Обозреватель серверов) для установки соединения с базой данных;
  • создавать адаптер данных, который извлекает из базы данных конкретную информацию;
  • создавать набор данных, представляющий в вашей программе одну или несколько таблиц базы данных;
  • использовать в форме Windows элементы управления TextBox, Label и Button для отображения информации из базы данных и элементов управления для навигации по базе данных.
  • В части 5 вы узнаете, как работать с информацией, хранящейся в базах данных. Вы познакомитесь с ADO.NET - новой парадигмой Microsoft для работы с информацией в базах данных с помощью комбинации кода программы и элементов управления форм Windows. Microsoft Visual Basic .NET был специально разработан для создания собственных интерфейсов - клиентов - для существующих баз данных, и если вы хотите использовать данные из других приложений, таких, как Microsoft Access, то можете немедленно браться за работу.

    В этой лекции вы сделаете первые шаги в программировании баз данных с помощью ADO.NET. Для установки соединения с базой данных Access из вашей системы вы будете использовать окно Server Explorer (Обозреватель серверов). Соединение настраивается с помощью диалогового окна Data Link Properties (Свойства соединения с данными). Для выбора таблицы данных используется адаптер данных. Вы создадите набор данных, основанный на этой таблице, который будет представлять в вашей программе часть базы данных. Выполнив эти базовые шаги, вы будете использовать элементы управления TextBox, Label и Button для отображения информации из базы данных в форме Windows.

    Что нового в Visual Basic .NET?

  • Модели доступа к данным Remote Data Objects (RDO - удаленные объекты данных) и ActiveX Data Objects (ADO - объекты данных ActiveX) заменены моделью доступа к данным ADO.NET. ADO.NET предлагает более широкий диапазон возможностей доступа к данным, чем его предшественники, и основана на новой технологии Microsoft для доступа к данным.
  • ADO.NET является стандартной моделью данных для всех программ Microsoft Visual Studio .NET, включая Microsoft Visual Basic .NET, Microsoft Visual C++ .NET, Microsoft J# .NET и Microsoft Visual C# .NET.
  • Известные элементы управления Data и ADO Data в Visual Basic .NET больше не доступны. Для отображения данных в формах обычно создается адаптер данных и набор данных, а затем добавляются элементы управления, которые могут отображать данные и позволяют пользователям производить переход с одной записи на другую.
  • В Visual Basic 6 информация из баз данных была представлена в программе с помощью объекта recordset (набор записей). В Visual Basic .NET информация из базы данных представлена объектом набора данных (dataset), который является независимым (локальным) образом таблицы базы данных, к которой вы обращаетесь.
  • Внутренний формат данных ADO.NET основан на XML, что облегчает использование существующих источников данных XML и использование ADO.NET в программах, разработанных для Веб.
  • В Visual Studio .NET 2003 ADO.NET получила дополнительные возможности соединения в виде .NET Framework Data Provider for ODBC и .NET Framework Data Provider for Oracle. Эти инструменты предоставляют доступ к провайдерам ODBC, а также, с помощью Oracle Call Interface (Интерфейса вызовов Oracle), к базам данных Oracle.
  • Программирование баз данных с использованием ADO.NET

    База данных - это организованная коллекция информации, хранящаяся в файле. Вы можете создавать мощные базы данных с помощью любых продуктов для создания баз данных, включая Microsoft Access, Microsoft FoxPro, Btrieve, Paradox, Oracle и Microsoft SQL Server. Вы также можете хранить и передавать информацию из базы данных с помощью XML (Extensible Markup Language - расширяемого языка разметки ) - формата файлов, разработанного для обмена структурированными данными через интернет и другие средства связи.

    Создание и управление базами данных стало для большинства корпораций, правительственных учреждений, некоммерческих организаций и большинства малых и средних компаний одной из важнейших задач. Большой объем данных - адреса клиентов, реквизиты производителей, балансы счетов, записи о сотрудниках, списки финансирующих организаций и другие перечни - стал источником жизненной силы мира бизнеса.

    Microsoft Visual Basic .NET предназначен для отображения, анализа и управления информацией в существующих базах данных. Хотя предыдущие версии Visual Basic также предоставляли такую возможность, Visual Basic .NET предлагает новую модель данных, которая называется ADO.NET и предоставляет доступ к еще большему количеству форматов баз данных. В частности, ADO.NET разработан для использования в интернете, что означает, что он использует один и тот же метод доступа к локальным, клиент-серверным и размещенным в интернете источникам данных. Microsoft сделала XML - стандарт, определенный организацией World Wide Web Consortium - внутренним форматом данных ADO.NET. Использование XML для этой цели делает ADO.NET более легким в использовании с существующими источниками данных в интернете, и облегчает написание поставщиками программного обеспечения адаптеров данных которые преобразуют внутренние форматы баз данных в формат, совместимый с ADO.NET.

    Терминология баз данных

    При работе с базами данных и ADO.NET прежде всего определим основные термины. Поля - это категории информации, хранящейся в базе данных. В обычной базе данных поля могут включать имена покупателей, адреса, номера телефонов и комментарии. Вся информация о конкретном покупателе или компании называется записью. При создании баз данных информация вводится в таблицы, состоящие из полей и записей. Записи соответствуют строкам таблицы, а поля соответствуют столбцам, как показано ниже.

    В ADO.NET для получения и изменения информации в базе данных используются различные объекты. На следующей иллюстрации показана структура подхода, который будет более подробно описан в этой лекции.

    Вначале устанавливается соединение, которое определяет информацию о соединении для базы данных. Далее создается адаптер данных, который управляет получением данных из базы данных и обратной отправкой изменений в данных. Затем создается набор данных, который является представлением одной или нескольких таблиц, с которыми вы планируете работать в вашей программе. (Вы управляете не самими данными, а только их копией.) Затем информация из набора данных может быть связана с элементами управления формы.

    Работа с базой данных Access

    В следующих разделах вы узнаете, как использовать в Visual Basic .NET технологию доступа к данным ADO.NET. Вы начнете с использования Server Explorer (Обозревателя серверов) для установки соединения с базой данных с именем Students.mdb, которую я создал в Microsoft Access. Students.mdb содержит различные таблицы академической информации, которая будет полезна для учителя, ведущего учет успеваемости студентов, или школьного администратора, составляющего расписание занятий, распределяющего аудитории и т.д. Вы узнаете, как создавать набор данных на основе таблицы информации из базы данных Students, и будете отображать эту информацию в форме Windows. Эти навыки помогут вам при работе с собственными проектами баз данных.

    Совет. Хотя пример в этой лекции использует базу данных Microsoft Access, вам не требуется устанавливать Microsoft Access. Visual Studio и ADO.NET включают необходимую поддержку для работы с форматом файлов Access, а также других форматов.

    Установка соединения с базой данных

  • Запустите Visual Studio и создайте в папке c:\vbnet03sbs\Гл.19 новый проект с именем My ADO Form. В среде разработки появится новый проект.
  • В меню View щелкните на команде Server Explorer (Обозреватель серверов). В среде разработки появится окно Server Explorer (Обозреватель серверов), показанное ниже.

    Совет. В зависимости от вашей конфигурации и версии Visual Studio, кнопка Connect To Server (Соединение с сервером) и узел Servers (Серверы) могут не отображаться. Для выполнения шагов, описанных в этой лекции, эти опции не требуются.

    Server Explorer (Обозреватель серверов) - это графический инструмент, который позволяет устанавливать соединения с локальными, клиент-серверными или размещенными в интернете источниками данных. С помощью Server Explorer (Обозревателя серверов) можно просматривать структуру таблиц баз данных и видеть атрибуты таблиц, полей и записей в базе данных. Вы также можете регистрироваться на серверах и изучать базы данных и системные службы, которые они предоставляют. Наконец, можно перетащить компоненты баз данных - или узлы - из Server Explorer (Обозревателя серверов) в конструкторы Visual Studio .NET, такие, как Конструктор Windows Forms. Этот процесс создает новые компоненты данных, которые настроены на использование выбранного вами элемента базы данных.

  • Щелкните в Обозревателе серверов на кнопке Connect To Database (Подключиться к базе данных). Прежде, чем вы сможете работать с информацией из базы данных, с ней необходимо установить соединение. Кнопка Connect To Database (Подключиться к базе данных) начинает этот процесс, открывая диалоговое окно Data Link Properties, которое позволяет вам указать информацию о формате базы данных, ее расположении, пароле и другую информацию.

    Совет. Вы также можете открыть диалоговое окно Data Link Properties (Свойства соединения с данными), щелкнув на команде Connect To Database (Подключиться к базе данных) в меню Tools (Сервис).
  • Щелкните на закладке Provider этого диалогового окна. Провайдер (или управляемый провайдер) - это низкоуровневая компонента базы данных, которая знает, как соединяться с базой данных и получать из нее данные. Двумя наиболее популярными типами провайдеров, предоставляемых Visual Studio .NET, являются OLE DB и SQL, но также имеются провайдеры, разработанные другими компаниями и работающие с большинством популярных форматов баз данных. В этом примере вы будете использовать провайдер Microsoft Jet 4.0 OLE DB - компоненту, разработанную для соединения с базами данных Microsoft Access.
  • Щелкните на закладке Provider на Microsoft Jet 4.0 OLE DB Provider. Ваш экран будет выглядеть примерно так.

  • Щелкните на кнопке Next, чтобы отобразить закладку Connection диалогового окна Data Link Properties. Так как вы выбрали формат Jet OLE DB, который является внутренним форматом Microsoft Access, закладка Connection будет настроена на получение информации об имени, расположении и данных о регистрации пользователя для базы данных Access.
  • Щелкните на кнопке многоточия рядом с полем Select Or Enter A Database Name (Выберите или введите имя базы данных), выберите базу данных Students.mdb, расположенную в папке c:\vbnet03sbs\ Гл.19, а затем щелкните на Открыть. Ваш экран будет выглядеть примерно так.

    Совет. Вы также можете указать вашу собственную базу данных, но вам потребуется изменить шаги, приведенные в этой лекции, в соответствии со структурой вашей базы данных.
  • Щелкните на кнопке Test Connection (Проверить соединение) на закладке Connection. Visual Studio попытается установить соединение с базой данных Students.mdb. Если в окне сообщения появится сообщение "Test Connection Succeeded" (Тест соединения успешно завершен), вы будете знать, что провайдер работает правильно, и что ваша база данных имеет корректный и правильно распознанный формат. Если Visual Studio обнаружит в этом месте ошибку, проверьте, что вы используете правильный провайдер, и что вы выбрали файл базы данных, а затем снова проверьте соединение.
  • Чтобы продолжить, щелкните на кнопке OK окна сообщения Test Connection Succeeded, а затем щелкните на OK в диалоговом окне Data Link Properties. Visual Studio создаст соединение и добавит в Server Explorer (Обозреватель серверов) узел, представляющий вашу базу данных.
  • Откройте в Server Explorer (Обозревателе серверов) узел Data Connections (Соединения с данными), затем узел ACCESS, и, наконец, узел Tables (Таблицы). Чтобы открыть в Server Explorer (Обозревателе серверов) узлы, щелкните на знаках "плюс" (+), которые работают как переключатели. В Server Explorer (Обозревателе серверов) появится структура базы данных Students, показанная ниже.

    Server Explorer (Обозреватель серверов) предоставляет огромное преимущество: он позволяет видеть графическое представление того, как организована база данных, так что вы можете немедленно использовать ее таблицы, поля и другие объекты.

  • Создание адаптера данных

    Теперь, когда у вас есть действующее соединение с базой данных, вы должны создать адаптер данных для получения конкретной информации из этой базы данных, которая будет использоваться в вашей программе. Адаптер данных определяет конкретную информацию, которую вы используете, и служит как основа для объекта набора данных (dataset), которые вы используете в вашей программе. Создание адаптера данных - обязательный шаг для использования набора данных, так как некоторые базы данных сильно структурированы и имеют множество таблиц - гораздо больше, чем требуется использовать в одной программе. Вы можете рассматривать адаптер данных как некий фильтр данных.

    Visual Studio предоставляет несколько механизмов для создания в программе адаптеров данных. Простейшим способом является перетаскивание значков таблицы из Server Explorer (Обозревателя серверов) в Windows Forms Designer (Конструктор Windows Forms). (Эта процедура создает объект адаптера данных в области компонент, расположенной прямо под формой.) Однако в следующем упражнении показано, как создавать адаптер данных с помощью второго метода - инструмента, который называется Data Adapter Configuration Wizard (Мастер конфигурации адаптера данных). Этот инструмент прост в использовании, и позволяет тонко настроить ваш набор данных с помощью написания оператора SQL SELECT. Вы запускаете этот мастер, перетащив в форму элемент управления OleDbDataAdapter с закладки Data окна Области элементов. Теперь попробуйте использовать этот второй метод.

    Использование элемента управления OleDbDataAdapter

  • Откройте Область элементов, а затем щелкните на закладке Data. Закладка Data содержит элементы управления, которые в программах помогают осуществлять доступ к данным. Если вы знакомы с Visual Basic 6, то вы увидите, что элементы управления Data и ADO Data больше не поддерживаются. Вместо этого вы осуществляете доступ к данным, добавляя в область компонент вашей программы объект адаптера данных и объект набора данных.

    Совет. Для установки соединения между вашей программой и источником данных также могут использоваться элементы управления OleDbConnection и SqlConnection. Однако в этой лекции вы уже создали соединение с базой данных с помощью Server Explorer (Обозревателя серверов), так что использование элемента управления OleDbConnection теперь не требуется.
  • Перетащите с закладки Data окна Область элементов в форму элемент управления OleDbDataAdapter. Элемент управления OleDbDataAdapter разработан для соединения с базами данных Access/Jet и многими другими популярными форматами баз данных. Когда вы перетаскиваете этот элемент управления в форму, Visual Studio запускает Data Adapter Configuration Wizard (Мастер конфигурации адаптера данных).
  • Прочтите вводную информацию относительно адаптеров данных, а затем щелкните на Next (Далее). Появится второе диалоговое окно мастера, которое запрашивает имя адаптера данных. Ваш экран должен выглядеть примерно так.

    Так как вы уже создали соединение с базой данных Access с помощью Server Explorer (Обозреватель серверов), в раскрывающемся списке появится это соединение. Если бы вы не создали соединение или захотели создать новое, вы могли бы сделать это сейчас, щелкнув на кнопке New Connection (Новое соединение).

  • Чтобы продолжить настраивать адаптер данных, щелкните на Next (Далее). Вы увидите следующее диалоговое окно, показанное на рисунке вверху следующей страницы, спрашивающее, как адаптер данных должен осуществлять доступ к данным из базы данных:

    Первая опция - Use SQL Statements (Использовать операторы SQL) - дает возможность создать оператор SQL SELECT, который будет фильтровать данные, которые вы планируете использовать. Для пользователей Visual Basic, которые знакомы с программированием баз данных, написанием запросов Access или использованием SQL Server, создание оператора SQL SELECT будет достаточно простой задачей. Однако если вы не знакомы с этим синтаксисом, вы можете использовать инструмент Query Builder (Построитель запросов), чтобы наглядно сгенерировать правильный оператор SELECT. В следующих шагах мы будем использовать Query Builder (Построитель запросов).

  • Чтобы принять опцию Use SQL Statements (Использовать операторы SQL), щелкните на Next (Далее). Вы увидите следующее диалоговое окно, которое запрашивает у вас оператор SQL SELECT.

  • Чтобы графически создать оператор SELECT, щелкните на кнопке Query Builder (Построитель запросов). Появится диалоговое окно Add Table (Добавление таблицы), показанное ниже.

    Чтобы создать оператор SELECT, выберете одну или несколько таблиц, содержащихся в базе данных Students.mdb.

  • Щелкните на Instructors, затем на Add (Добавить), а затем на Close (Закрыть). Visual Studio отображает графический инструмент Query Builder (Построитель запросов), который содержит представление таблицы Instructors.
  • В таблице Instructor щелкните на флажках рядом с полями Instructor и InstructorID. Query Builder (Построитель запросов) создаст оператор Query Builder (Построитель запросов), который извлекает из таблицы Instructors поля Instructor и InstructorID, как показано на рисунке вверху следующей страницы.

    В этом примере вы просто извлекаете из таблицы два поля, но вы легко можете создать оператор SQL SELECT, который извлекает несколько полей из одной или сразу нескольких таблиц. Поле InstructorID показано жирным, так как это действующий первичный ключ таблицы базы данных.

  • Чтобы завершить создание оператора SELECT, щелкните на OK. Снова появится диалоговое окно Generate The SQL Statements (Создание инструкций SQL), содержащее ваш оператор SELECT. Запомните этот простой синтаксис - в будущем его можно использовать для написания ваших собственных операторов SELECT без использования Query Builder (Построитель запросов).

  • Щелкните на кнопке Finish (Готово). Если вы увидите диалоговое окно, запрашивающее у вас информацию о пароле, щелкните на Don't Include Password (Не включать пароль). Visual Studio добавляет в область компонент под вашей формой завершенный адаптер данных и представление объекта OleDbConnection. Каждый объект определяется уникальным номером, так как у вас в программе может быть более одного соединения с данными или несколько адаптеров данных. Ваш экран выглядит примерно так, как показано на рисунке вверху следующей страницы.

  • Работа с наборами данных

    Следующим шагом при программировании базы данных ADO.NET является создание объекта, представляющего данные, которые вы хотите использовать в вашей программе. Этот объект называется набором данных, и он является представлением данных, получаемых через объект соединения с данными и извлекаемых объектом адаптера данных. Набор данных может содержать информацию из одной или нескольких таблиц базы данных, и это содержимое может также быть результатом работы оператора SQL SELECT, такого, как вы только что использовали для извлечения данных из базы Students.mdb. В отличие от наборов записей (recordsets) - механизмов доступа к данным, присутствовавших в предыдущих версиях Visual Basic - наборы данных только представляют данные из базы данных. Когда вы изменяете набор данных, вы не изменяете таблиц самой базы данных до тех пор, пока не запишете изменения обратно в эту базу данных.

    В следующем упражнении вы создадите набор данных, который представляет поле Instructor из таблицы Instructors базы данных Students.mdb. Создание набора данных при наличии готового и правильно настроенного адаптера данных очень просто.

    Создание набора данных для хранения данных Instructor

  • Чтобы убедиться, что форма активна, щелкните на ней. Если форма будет не активна, команда из меню Data (Данные), которая нужна вам для создания набора данных, будет недоступна.
  • Щелкните на команде Generate Dataset (Создать dataset) в меню Data (Данные). Появится диалоговое окно Generate Dataset (Создать dataset).
  • В поле New (Создать) установите имя нового набора данных равным DsInstructors.
  • Проверьте, что флажок Add This Dataset To The Designer (Добавить этот dataset в конструктор) установлен так, что Visual Studio добавить новый набор данных в область компонент. Ваше диалоговое окно будет выглядеть так.

  • Чтобы создать набор данных для поля Instructor и добавить его в ваш проект, щелкните на OK. Набор данных появится в области компонент, как показано ниже.

    Visual Studio также добавит в Solution Explorer (Обозреватель решений) поле с именем DsInstructors.xsd, представляющее схему базы данных, которую вы только что добавили в ваш проект. Эта схема является XML-файлом, который описывает таблицы, поля, типы данных и другие элементы набора данных. Типизированные наборы данных имеют ассоциированные с ними файлы схем (.xsd), а нетипизированные таких файлов не имеют. Преимущество типизированных наборов данных с файлами схем в том, что они позволяют использовать функцию автозавершения операторов при наборе в Редакторе кода, и дают информацию об используемых полях и таблицах.

  • Теперь, когда вы создали набор данных, можно вывести в вашей форме записи из таблицы Instructors с помощью связанных элементов управления.

    Использование связанных элементов управления для отображения в форме информации из базы данных

    Это самая интересная часть, но как это можно сделать? Вместо того чтобы воссоздавать в вашей форме таблицу базы данных Access, Visual Basic позволяет отображать только те поля и записи, которые вы хотите увидеть - можете предоставить вашим пользователям возможность увидеть всю таблицу информации из базы данных, а можете показать только те поля, которые вы хотите. В дополнение к этому можно предоставить механизм навигации так, что пользователи смогут просматривать все записи в базе данных, а можно отображать только конкретные записи. Наконец, можно позволить пользователям изменять или даже удалять информацию из базы данных, а можете ограничить их действия только просмотром записей из базы данных. Короче, Visual Basic позволяет создавать программу для просмотра базы данных - или внешний интерфейс - который предоставляет только ту информацию и те возможности доступа к данным, которые вы хотите предоставить своим пользователям. Хотя я этого и не говорил, большинство элементов управления на закладке Windows Forms окна Область элементов имеют встроенную возможность отображать в форме информацию из базы данных. В терминологии Visual Basic эти элементы управления обычно называются связанными элементами управления. Элемент управления называется связанным с источником данных, когда его свойство DataBindings содержит одно из полей набора данных. После установки соединения вы можете отображать информацию из базы данных с помощью методов и свойств, имеющихся в объектной модели ADO.NET. Элементы управления с закладки Windows Forms окна Области элементов, которые могут отображать информацию из базы данных, включают TextBox, ComboBox, ListBox, CheckBox, RadioButton, DataGrid и PictureBox.

    Совет. За дополнительной информацией по использованию элемента управления DataGrid для отображения информации из базы данных обратитесь к лекции 20.

    В следующем упражнении показано, как для отображения информации из таблицы Instructors базы данных Students.mdb вы можете добавить в вашу форму объект текстового поля.

    Использование объекта TextBox для отображения данных

  • Используйте элемент управления TextBox и нарисуйте в центре формы объект текстового поля. Сделайте этот объект текстового поля достаточно широким, чтобы отображать имена и фамилии гипотетических инструкторов из базы данных Students.mdb.
  • С помощью элемента управления Label слева от объекта текстового поля нарисуйте объект метки.
  • Используя элемент управления Button, нарисуйте в нижнем левом углу формы одну кнопку.
  • Установите для объектов формы следующие свойства:

    Объект Свойство Установка
    TextBox1 Name txtInstructor
    Text пустой (empty)
    Label1 Name lblInstructor
    Text Инструктор
    TextAlign MiddleRight
    Button1 Name btnLoad
    Text Загрузка данных
    Form1 Text Форма ADO

    Ваша форма должна выглядеть примерно так, как показано на рисунке вверху следующей страницы. Теперь вы должны связать поле Instructor с объектом текстового поля (txtInstructor).

  • Щелкните на объекте текстового поля формы, а затем откройте окно Properties. Я рекомендую открепить окно Properties (Свойства) и расширить его так, чтобы было достаточно места для просмотра структуры таблицы Instructors базы данных.
  • Откройте категорию DataBindings, щелкните на свойстве Text, а затем щелкните на стрелке раскрывающегося списка. Окно Properties (Свойства) отобразит список источников данных, с которыми вы можете связать ваше текстовое поле. Если вы выполнили предыдущее упражнение, то увидите в раскрывшемся списке объект набора данных с именем DsInstructors1.
  • Щелкните на знаке "плюс" (+), чтобы раскрыть набор данных DsInstructors1, а затем раскройте таблицу Instructors, содержащуюся в нем. В окне Properties (Свойства) вы увидите следующую структуру базы данных (см. рис. вверху следующей страницы).

    Instructors - это имя таблицы из базы данных Students.mdb, а Instructor - это поле из этой таблицы, содержащее имена учителей, которые работают в гипотетическом колледже.

  • Чтобы выбрать поле Instructor в качестве поля, которое будет отображаться в текстовом поле txtInstructor, щелкните на нем мышью. Убедитесь, что вы щелкнули на самом тексте "Instructor", а не на значке; в противном случае поле Instructor не будет выделено. В свойстве Text окна Properties (Свойства) появятся имена набора данных, таблицы и поля. Теперь можно написать код программы, который загружает данные в набор данных и отображает их в объекте текстового поля.
  • Восстановите прежнее состояние окна Properties (Свойства), сделайте двойной щелчок мышью на кнопке Загрузка данных, а затем введите в процедуре события btnLoad_Click, открывшейся в Редакторе кода, следующий код программы:

    DsInstructors1.Clear()
    OleDbDataAdapter1.Fill(DsInstructors1)

    Вы должны заполнить адаптер данных данными вручную с помощью метода Fill, который затем загружает информацию из определенного вами ранее набора данных в объект текстового поля. Хотя это может показаться дополнительным шагом, это легко делается с помощью двух строчек кода программы. В этом контексте метод Clear необходим для того, чтобы к набору данных не добавлялись записи, полученные с помощью предыдущих запросов к базе данных. Использование ADO.NET иногда требует дополнительных шагов, которые не требовались при использовании ADO и Visual Basic.

    Совет. С целью демонстрации я поместил эти две строки в процедуру события кнопки, но можно легко поместить их в процедуру события Form1_Load, чтобы объект текстового поля заполнялся при открытии формы на экране.
  • Чтобы запустить программу ADO Form, щелкните на кнопке Start (Начать). Программа ADO Form запустится на выполнение в среде разработки. Заметьте, что в настоящий момент в текстовом поле нет имени инструктора.
  • Щелкните на кнопке Загрузка данных. Через мгновение в текстовом поле появится имя "Delamarco, Stefan", как показано на следующей иллюстрации. Это первое имя инструктора в базе данных Students.

  • Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы. Вы успешно вывели на экран имя инструктора из базы данных Students.
  • Создание элементов управления для навигации

    Сейчас программа ADO Form отображает имя первого инструктора из базы данных Students.mdb. Но как просмотреть список имен инструкторов, и как переходить к первой или последней записи базы данных? ADO.NET хранит информацию о текущей записи и общем числе записей с помощью объекта, который называется CurrencyManager. Для каждого набора данных существует объект CurrencyManager, и каждая форма Windows имеет объект BindingContext, который хранит все объекты CurrencyManager формы.

    В следующем упражнении вы создадите в программе ADO Form объекты кнопок с именами Первая запись, Последняя запись, Предыдущая запись и Следующая запись, которые предоставляют пользователю базовые возможности навигации по базе данных. После того, как вы создадите в форме эти кнопки, вы добавите в каждую процедуру события Click этих кнопок код программы, который с помощью объекта BindingContext, набора данных DsInstructors1 и таблицы Instructors отображает соответствующую запись базы данных. Вы также можете настроить этот код программы так, чтобы он соответствовал вашим нуждам, просто заменив имена набора данных и таблицы на значения из вашей собственной структуры базы данных.

    Добавление кнопок Первая запись, Последняя запись, Предыдущая запись и Следующая запись

  • Отобразите интерфейс пользователя ADO Form, а затем используйте элемент управления Button и создайте в вашей форме четыре объекта кнопок. Добавьте два объекта кнопок в центре формы, а два в нижней части формы.
  • Установите для этих объектов кнопок следующие свойства:

    Объект Свойство Установка
    Button1 Name btnFirst
    Text Первая запись
    Button2 Name btnLast
    Text Последняя запись
    Button3 Name btnPrev
    Text Предыдущая запись
    Button4 Name btnNext
    Text Следующая запись

    Ваша форма должна выглядеть примерно так.

    Теперь добавьте код программы, который добавляет навигационные функции для кнопок.

  • Сделайте двойной щелчок мышью на кнопке Первая запись. В Редакторе кода появится процедура события btnFirst_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position = 0

    Эта запись предназначена для использования объекта BindingContext для отображения первой записи из набора данных DsInstructors1 таблицы Instructors. Этот оператор программы устанавливает свойство Position на значение 0, что приводит к изменению текущей записи в наборе данных на первую запись. (Аналогично массивам и коллекциям, наборы данных начинают нумерацию записей с 0.) Также обратите внимание на использование объекта Me, который указывает на объект BindingContext для текущей формы.

  • Отобразите форму, а затем дважды щелкните мышью на кнопке Последняя запись. В Редакторе кода появится процедура события btnLast_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position = _
    Me.BindingContext(DsInstructors1, "Instructors").Count - 1

    Этот длинный оператор (разделенный на две строки) приводит к тому, что в форме отображается последняя запись из набора данных. Это вариант предыдущего оператора BindingContext, но вместо установки свойства Position на значение 0, этот оператор устанавливает текущую запись на значение, хранящееся в свойстве Count минус 1. Count - это общее число записей в наборе данных. Единица вычитается из-за того, что нумерация записей начинается с 0.

  • Отобразите форму, а затем сделайте двойной щелчок мышью на кнопке Предыдущая запись. В Редакторе кода появится процедура события btnPrev_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position -= 1

    Этот оператор отображает предыдущую запись из набора данных, вычитая 1 из текущей записи. Хотя этот оператор не имеет смысла, если текущая запись уже равна 0, она не приведет к возникновению синтаксической ошибки - ADO.NET не позволит текущей записи иметь номер меньше 0. Обратите внимание на использование в этом операторе синтаксиса -= для декремента свойства Position. Это сокращенная математическая запись, которую я впервые представил при декрементировании переменных в лекции 5.

  • Отобразите форму, а затем дважды щелкните мышью на кнопке Следующая запись. В Редакторе кода появится процедура события btnNext_Click.
  • Введите следующий код программы:

    Me.BindingContext(DsInstructors1, "Instructors").Position += 1

    Этот оператор инкрементирует свойство Position для отображения следующей записи из набора данных. Заметьте, что для обновления свойства Position с помощью минимального количества кода программы я использовал здесь математический оператор +=. Теперь вы запустите обновленную программу и протестируете кнопки навигации, только что созданные вами.

  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  • Чтобы заполнить текстовое поле формы именем первого инструктора из набора данных, щелкните на кнопке Загрузка данных.
  • Чтобы отобразить следующую запись из базы данных, щелкните на кнопке Следующая запись. Ваша форма будет выглядеть примерно так.

  • Чтобы снова отобразить первую запись, щелкните на кнопке Предыдущая запись.
  • Чтобы просмотреть несколько имен инструкторов из списка, щелкните на кнопке Следующая запись несколько раз
  • Чтобы отобразить первую запись набора данных, щелкните на кнопке Первая запись.
  • Чтобы отобразить последнюю запись набора данных, щелкните на кнопке Последняя запись. Обратите внимание, что программа не выдает ошибки, если вы отображаете последнюю запись, а затем щелкаете на Следующая запись. Кроме того, программа не выдает ошибки, если вы отображаете первую запись, а затем щелкаете на Предыдущая запись. Эта обработка ошибок встроена в объект BindingContext.
  • Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы.
  • Следующий шаг: отображение текущей позиции записи

    В дополнение к предоставлению в вашей форме базовых инструментов для навигации вы можете предоставить некую индикацию текущего номера записи, а также общего числа записей в наборе данных. Вы можете сделать это, создав в форме объект метки, который будет отображать текущую позицию. Значение текущей позиции хранится в свойстве Position объекта BindingContext. Если вы хотите обновлять текущую позицию каждый раз, когда используются кнопки навигации, создайте в верхней части кода программы формы процедуру, которая будет определять текущую позицию и отображать ее в форме.

    В следующем упражнении вы создадите процедуру с именем Count, которая объявляет две переменные, хранящие общее число записей и номер текущей записи, а затем отображает эту информацию с помощью свойства Text новой метки с именем lblCount.

    Создание процедуры Count для отображения информации о текущей записи

  • Отобразите форму, а затем используйте элемент управления Label и нарисуйте прямо под текстовым полем широкую метку.
  • Установите свойство Name этой метки равным "lblCount".
  • Установите свойство Text этой метки равным "Запись 0 из 0".
  • Чтобы открыть Редактор кода, щелкните в Обозревателе решений на кнопке View Code (Просмотреть код).
  • Прокрутите окно Редактор кода в самый верх и поместите курсор под тeгом "Windows Form Designer generated code" ("Код, автоматически созданный конструктором форм Windows"). Когда мы размещаем процедуру в классе Form, ее можно вызвать из любого места кода формы.
  • Введите в процедуре Count следующий код программы. Обратите внимание, что Visual Basic автоматически добавляет оператор End Sub.

    Private Sub Count()
    	Dim Records, Current As Integer
    	Records = Me.BindingContext( _
    	DsInstructors1, "Instructors").Count
    	Current = Me.BindingContext( _
    	DsInstructors1, "Instructors").Position + 1
    	lblCount.Text = "Запись "  Current.ToString  " из "  _
    	Records.ToString
    End Sub

    Процедура Count присваивает значение свойства Count целочисленной переменной Records, а значение свойства Position плюс 1 присваивает целочисленной переменной Current. К значению Position добавляется 1 из-за того, что список записей нумеруется с 0 (как массивы и коллекции) - интересный момент для программистов, но не имеющий смысла для пользователя. Наконец, переменные Records и Current преобразуются в строки и вместе с форматирующей информацией копируются в свойство Text объекта lblCount. Текст в этой метке будет иметь следующий формат: "Запись x из y", где x - это значение переменной Current, а y - это значение переменной Records. Теперь в каждую из пяти процедур событий кнопок программы ADO Form добавьте вызов процедуры Count. Это важно, так как каждая кнопка выполняет действие, связанное с навигацией, поэтому метку следует обновлять каждый раз, когда меняется значение свойства Position.

  • Прокрутите окно вниз до процедуры события btnFirst_Click, добавьте в верхней части процедуры пустую строку и введите следующий вызов процедуры:

    Count()

    Ваша процедура события будет теперь выглядеть так (хотя первая строка может быть не разделена на две):

    Private Sub btnFirst_Click(ByVal sender As System.Object, _
    	ByVal e As System.EventArgs) Handles btnFirst.Click
    	Me.BindingContext(DsInstructors1, "Instructors").Position = 0
    	Count()
    End Sub
  • Повторите этот шаг, добавив вызов процедуры Count в каждую из следующих процедур событий вашей программы: btnLast_Click, btnPrev_Click, btnNext_Click и btnLoad_Click. Теперь запустите программу и посмотрите, как работает статистика текущей записи.
  • Чтобы запустить программу, щелкните на кнопке Start (Начать).

    Примечание. Готовая программа ADO Form лежит в папке c:\vbnet03sbs\Гл.19\ado form.
  • Щелкните на кнопке Загрузка данных. Форма заполнится данными и появится имя первого инструктора. В дополнение к этому под текстовым полем в только что созданной вами новой метке появится текст Запись 1 из 9. Ваша форма должна выглядеть примерно так.

  • Чтобы посмотреть, как меняется статистика текущей записи при просмотре записей инструкторов из набора данных, щелкните несколько раз на кнопке Следующая запись.
  • Щелкните на кнопках Предыдущая запись, Первая запись и Последняя запись, чтобы убедиться, что процедура Count работает также и для этих навигационных кнопок.
  • Чтобы остановить приложение ADO Form, щелкните на кнопке Закрыть в строке заголовка программы.
  • Вы написали на Visual Basic и ADO.NET вашу первую оболочку для базы данных. В этом примере вы использовали базу данных Microsoft Access. Однако вы обнаружите, что базовые методики доступа к данным других типов, включая базы данных SQL Server и базы данных, хранящихся в удаленных хранилищах, очень похожи на эту. Причина этой одинаковости заключается в распределенной архитектуре ADO.NET, которая использует один и тот же механизм для установления соединения, настройки адаптеров данных и создания наборов данных.

    Хотя для установки базового соединения и настройки в сессии ADO.NET требуется выполнить несколько шагов, преимущество этой предварительной работы состоит в том, что манипуляции с информацией из базы данных становятся универсальным процессом. Это верно даже тогда, когда используемые вами данные получаются из удаленного источника или являются результатом объединения различных таблиц базы данных или форматов данных. В следующей лекции вы продолжите работать с информацией из базы данных, и научитесь как использовать элемент управления DataGrid для одновременной работы с несколькими записями базы данных.

    Доступ к данным в среде веб-форм

    Техники доступа к данным, обсуждаемые в этой лекции, были разработаны для использования в среде форм Windows - базовой среде Visual Studio, которую вы использовали для создания большинства программ из этой книги. Однако вы также можете использовать техники программирования ADO.NET в среде веб-форм, что позволяет совместно использовать источники данных из интернета и писать оболочки для баз данных, которые доступны через веб-браузер. Большинство различий между средами форм Windows и веб-форм описано в лекции 22 . За дополнительной информацией по написанию приложений баз данных в среде веб-форм обратитесь к справочной системе Visual Basic.

    Краткая справка по лекции 19

    Чтобы Сделайте следующее
    Установить соединение с базой данных Щелкните на команде Server Explorer (Обозреватель серверов) в меню View (Вид), далее на кнопке Connect To Database (Подключиться к базе данных) и с помощью диалогового окна Data Link Properties (Свойства соединения с данными) укажите базу данных, к которой вы хотите открыть доступ.
    Создать адаптер данных Щелкните на закладке Data (Данные) в окне Toolbox (Область элементов), перетащите в форму элемент управления OleDbDataAdapter или элемент управления SqlDataAdapter, а затем укажите в Data Adapter Configuration Wizard (Мастере конфигурации адаптера данных) информацию о базе данных, которую вы хотите использовать.
    Создать набор данных Щелкните на команде Generate Dataset (Создать dataset) в меню Data (Данные), укажите имя набора данных, а затем убедитесь, что установлен флажок Add This Dataset To The Designer (Добавить этот dataset в конструктор).
    Связать элемент управления формы Windows с активным набором данных Добавьте в форму подходящий элемент управления, откройте окно Properties (Свойства), а затем установите свойства категории DataBinding этого элемента управления равными требуемому полю (столбцу) из набора данных. (Одним из наиболее полезных свойств категории DataBinding является Text.)
    Заполнить набор данных данными и вывести их в связанном элементе управления в форме Windows

    Поместите в процедуру события, которая должна заполнять элементы управления формы, следующий оператор программы. (Замените имена адаптера и набора данных вашими собственными.)

    OleDbDataAdapter1.Fill(DsInstructors1)
    Добавить в форму Windows элементы управления для навигации

    Создайте в форме объекты кнопок и добавьте в каждую из их процедур события Click операторы, которые обновляют свойство Position объекта BindingContext. Например, следующий оператор программы отображает следующую запись из таблицы с именем Instructors, находящейся в наборе данных DsInstructors1:

    Me.BindingContext(DsInstructors1, _
    	"Instructors").Position += 1
    Вернуться к учебному плану