В этой лекции вы узнаете, как:
TextBox, Label и Button для отображения информации из базы данных и элементов управления для навигации по базе данных.В части 5 вы узнаете, как работать с информацией, хранящейся в базах данных. Вы познакомитесь с ADO.NET - новой парадигмой Microsoft для работы с информацией в базах данных с помощью комбинации кода программы и элементов управления форм Windows. Microsoft Visual Basic .NET был специально разработан для создания собственных интерфейсов - клиентов - для существующих баз данных, и если вы хотите использовать данные из других приложений, таких, как Microsoft Access, то можете немедленно браться за работу.
В этой лекции вы сделаете первые шаги в программировании баз данных с помощью ADO.NET. Для TextBox, Label и Button для отображения информации из базы данных в форме Windows.
База данных - это организованная коллекция информации, хранящаяся в файле. Вы можете создавать мощные базы данных с помощью любых продуктов для создания баз данных, включая 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 для получения и изменения информации в базе данных используются различные объекты. На следующей иллюстрации показана структура подхода, который будет более подробно описан в этой лекции.

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

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

Щелкните на кнопке многоточия рядом с полем Select Or Enter A Database Name (Выберите или введите имя базы данных), выберите базу данных Students.mdb, расположенную в папке c:\vbnet03sbs\ Гл.19, а затем щелкните на Открыть. Ваш экран будет выглядеть примерно так.

Откройте в

Теперь, когда у вас есть действующее соединение с базой данных, вы должны создать адаптер данных для получения конкретной информации из этой базы данных, которая будет использоваться в вашей программе. Адаптер данных определяет конкретную информацию, которую вы используете, и служит как основа для объекта набора данных (dataset), которые вы используете в вашей программе. Создание адаптера данных - обязательный шаг для использования набора данных, так как некоторые базы данных сильно структурированы и имеют множество таблиц - гораздо больше, чем требуется использовать в одной программе. Вы можете рассматривать адаптер данных как некий
Visual Studio предоставляет несколько механизмов для создания в программе адаптеров данных. Простейшим способом является перетаскивание значков таблицы из
Откройте Область элементов, а затем щелкните на закладке Data. Закладка Data содержит элементы управления, которые в программах помогают осуществлять доступ к данным. Если вы знакомы с Visual Basic 6, то вы увидите, что элементы управления Data и ADO Data больше не поддерживаются. Вместо этого вы осуществляете доступ к данным, добавляя в область компонент вашей программы объект адаптера данных и объект набора данных.
Прочтите вводную информацию относительно адаптеров данных, а затем щелкните на Next (Далее). Появится второе диалоговое окно мастера, которое запрашивает имя адаптера данных. Ваш экран должен выглядеть примерно так.

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

Чтобы принять опцию Use

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

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

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

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

Чтобы создать набор данных для поля

Visual Studio также добавит в Solution Explorer (Обозреватель решений) поле с именем DsInstructors.xsd, представляющее схему базы данных, которую вы только что добавили в ваш проект. Эта схема является XML-файлом, который описывает таблицы, поля, типы данных и другие элементы набора данных. Типизированные наборы данных имеют ассоциированные с ними файлы схем (.xsd), а нетипизированные таких файлов не имеют. Преимущество типизированных наборов данных с файлами схем в том, что они позволяют использовать функцию
Теперь, когда вы создали набор данных, можно вывести в вашей форме записи из таблицы
Это самая интересная часть, но как это можно сделать? Вместо того чтобы воссоздавать в вашей форме таблицу базы данных Access, Visual Basic позволяет отображать только те поля и записи, которые вы хотите увидеть - можете предоставить вашим пользователям возможность увидеть всю таблицу информации из базы данных, а можете показать только те поля, которые вы хотите. В дополнение к этому можно предоставить механизм навигации так, что пользователи смогут просматривать все записи в базе данных, а можно отображать только конкретные записи. Наконец, можно позволить пользователям изменять или даже удалять информацию из базы данных, а можете ограничить их действия только просмотром записей из базы данных. Короче, Visual Basic позволяет создавать программу для просмотра базы данных - или внешний интерфейс - который предоставляет только ту информацию и те возможности доступа к данным, которые вы хотите предоставить своим пользователям. Хотя я этого и не говорил, большинство элементов управления на закладке Windows Forms окна Область элементов имеют встроенную возможность отображать в форме информацию из базы данных. В терминологии Visual Basic эти элементы управления обычно называются связанными элементами управления. Элемент управления называется связанным с источником данных, когда его свойство DataBindings содержит одно из полей набора данных. После установки соединения вы можете отображать информацию из базы данных с помощью методов и свойств, имеющихся в объектной модели ADO.NET. Элементы управления с закладки Windows Forms окна Области элементов, которые могут отображать информацию из базы данных, включают TextBox, ComboBox, ListBox, CheckBox, RadioButton, DataGrid и PictureBox.
DataGrid для отображения информации из базы данных обратитесь к лекции 20.В следующем упражнении показано, как для отображения информации из таблицы
TextBox и нарисуйте в центре формы объект текстового поля. Сделайте этот объект текстового поля достаточно широким, чтобы отображать имена и фамилии гипотетических инструкторов из базы данных Students.mdb.Label слева от объекта текстового поля нарисуйте объект метки.Button, нарисуйте в нижнем левом углу формы одну кнопку.Установите для объектов формы следующие свойства:
| Объект | Свойство | Установка |
|---|---|---|
| TextBox1 | Name | txtInstructor |
| Text | пустой (empty) | |
| Label1 | Name | lblInstructor |
| Text | Инструктор | |
| TextAlign | MiddleRight | |
| Button1 | Name | btnLoad |
| Text | Загрузка данных | |
| Form1 | Text | Форма ADO |
Ваша форма должна выглядеть примерно так, как показано на рисунке вверху следующей страницы. Теперь вы должны связать поле

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

Text окна Properties (Свойства) появятся имена набора данных, таблицы и поля. Теперь можно написать код программы, который загружает данные в набор данных и отображает их в объекте текстового поля.Восстановите прежнее состояние окна Properties (Свойства), сделайте двойной щелчок мышью на кнопке Загрузка данных, а затем введите в процедуре события btnLoad_Click, открывшейся в Редакторе кода, следующий код программы:
DsInstructors1.Clear() OleDbDataAdapter1.Fill(DsInstructors1)
Вы должны заполнить адаптер данных данными вручную с помощью метода Fill, который затем загружает информацию из определенного вами ранее набора данных в объект текстового поля. Хотя это может показаться дополнительным шагом, это легко делается с помощью двух строчек кода программы. В этом контексте метод Clear необходим для того, чтобы к набору данных не добавлялись записи, полученные с помощью предыдущих запросов к базе данных. Использование ADO.NET иногда требует дополнительных шагов, которые не требовались при использовании ADO и Visual Basic.
Form1_Load, чтобы объект текстового поля заполнялся при открытии формы на экране.Щелкните на кнопке Загрузка данных. Через мгновение в текстовом поле появится имя "Delamarco, Stefan", как показано на следующей иллюстрации. Это первое имя инструктора в базе данных Students.

Сейчас программа ADO Form отображает имя первого инструктора из базы данных Students.mdb. Но как просмотреть список имен инструкторов, и как переходить к первой или последней записи базы данных? ADO.NET хранит информацию о текущей записи и общем числе записей с помощью объекта, который называется CurrencyManager. Для каждого набора данных существует объект CurrencyManager, и каждая форма Windows имеет объект BindingContext, который хранит все объекты CurrencyManager формы.
В следующем упражнении вы создадите в программе ADO Form объекты кнопок с именами Первая запись, Последняя запись, Предыдущая запись и Следующая запись, которые предоставляют пользователю базовые возможности навигации по базе данных. После того, как вы создадите в форме эти кнопки, вы добавите в каждую процедуру события Click этих кнопок код программы, который с помощью объекта BindingContext, набора данных DsInstructors1 и таблицы
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 таблицы 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 с помощью минимального количества кода программы я использовал здесь математический оператор +=. Теперь вы запустите обновленную программу и протестируете кнопки навигации, только что созданные вами.
Чтобы отобразить следующую запись из базы данных, щелкните на кнопке Следующая запись. Ваша форма будет выглядеть примерно так.

BindingContext.В дополнение к предоставлению в вашей форме базовых инструментов для навигации вы можете предоставить некую индикацию текущего номера записи, а также общего числа записей в наборе данных. Вы можете сделать это, создав в форме объект метки, который будет отображать текущую позицию. Значение текущей позиции хранится в свойстве Position объекта BindingContext. Если вы хотите обновлять текущую позицию каждый раз, когда используются кнопки навигации, создайте в верхней части кода программы формы процедуру, которая будет определять текущую позицию и отображать ее в форме.
В следующем упражнении вы создадите процедуру с именем Count, которая объявляет две переменные, хранящие общее число записей и номер текущей записи, а затем отображает эту информацию с помощью свойства Text новой метки с именем lblCount.
Label и нарисуйте прямо под текстовым полем широкую метку.Name этой метки равным "lblCount".Text этой метки равным "Запись 0 из 0".Введите в процедуре 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 (Начать).
Щелкните на кнопке Загрузка данных. Форма заполнится данными и появится имя первого инструктора. В дополнение к этому под текстовым полем в только что созданной вами новой метке появится текст Запись 1 из 9. Ваша форма должна выглядеть примерно так.

Count работает также и для этих навигационных кнопок.Вы написали на Visual Basic и ADO.NET вашу первую оболочку для базы данных. В этом примере вы использовали базу данных Microsoft Access. Однако вы обнаружите, что базовые методики доступа к данным других типов, включая базы данных SQL Server и базы данных, хранящихся в удаленных хранилищах, очень похожи на эту. Причина этой одинаковости заключается в распределенной архитектуре ADO.NET, которая использует один и тот же механизм для установления соединения, настройки адаптеров данных и создания наборов данных.
Хотя для установки базового соединения и настройки в сессии ADO.NET требуется выполнить несколько шагов, преимущество этой предварительной работы состоит в том, что манипуляции с информацией из базы данных становятся универсальным процессом. Это верно даже тогда, когда используемые вами данные получаются из удаленного источника или являются результатом объединения различных таблиц базы данных или форматов данных. В следующей лекции вы продолжите работать с информацией из базы данных, и научитесь как использовать элемент управления DataGrid для одновременной работы с несколькими записями базы данных.
Техники доступа к данным, обсуждаемые в этой лекции, были разработаны для использования в среде форм Windows - базовой среде Visual Studio, которую вы использовали для создания большинства программ из этой книги. Однако вы также можете использовать техники программирования ADO.NET в среде веб-форм, что позволяет совместно использовать источники данных из интернета и писать оболочки для баз данных, которые доступны через веб-браузер. Большинство различий между средами форм Windows и веб-форм описано в лекции 22 . За дополнительной информацией по написанию приложений баз данных в среде веб-форм обратитесь к справочной системе Visual Basic.
| Чтобы | Сделайте следующее |
|---|---|
| Установить соединение с базой данных | Щелкните на команде |
| Создать адаптер данных | Щелкните на закладке Data (Данные) в окне Toolbox (Область элементов), перетащите в форму элемент управления OleDbDataAdapter или элемент управления SqlDataAdapter, а затем укажите в Data |
| Создать набор данных | Щелкните на команде Generate Dataset (Создать dataset) в меню Data (Данные), укажите имя набора данных, а затем убедитесь, что установлен флажок Add This Dataset To The Designer (Добавить этот dataset в конструктор). |
| Связать элемент управления формы Windows с активным набором данных | Добавьте в форму подходящий элемент управления, откройте окно Properties (Свойства), а затем установите свойства категории DataBinding этого элемента управления равными требуемому полю (столбцу) из набора данных. (Одним из наиболее полезных свойств категории DataBinding является Text.) |
| Заполнить набор данных данными и вывести их в связанном элементе управления в форме Windows | Поместите в процедуру события, которая должна заполнять элементы управления формы, следующий оператор программы. (Замените имена адаптера и набора данных вашими собственными.) OleDbDataAdapter1.Fill(DsInstructors1) |
| Добавить в форму Windows элементы управления для навигации | Создайте в форме объекты кнопок и добавьте в каждую из их процедур события Click операторы, которые обновляют свойство Position объекта BindingContext. Например, следующий оператор программы отображает следующую запись из таблицы с именем Me.BindingContext(DsInstructors1, _ "Instructors").Position += 1 |
В этой лекции вы узнаете, как:
TextBox, Label и Button для отображения информации из базы данных и элементов управления для навигации по базе данных.В части 5 вы узнаете, как работать с информацией, хранящейся в базах данных. Вы познакомитесь с ADO.NET - новой парадигмой Microsoft для работы с информацией в базах данных с помощью комбинации кода программы и элементов управления форм Windows. Microsoft Visual Basic .NET был специально разработан для создания собственных интерфейсов - клиентов - для существующих баз данных, и если вы хотите использовать данные из других приложений, таких, как Microsoft Access, то можете немедленно браться за работу.
В этой лекции вы сделаете первые шаги в программировании баз данных с помощью ADO.NET. Для TextBox, Label и Button для отображения информации из базы данных в форме Windows.
База данных - это организованная коллекция информации, хранящаяся в файле. Вы можете создавать мощные базы данных с помощью любых продуктов для создания баз данных, включая 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 для получения и изменения информации в базе данных используются различные объекты. На следующей иллюстрации показана структура подхода, который будет более подробно описан в этой лекции.

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

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

Щелкните на кнопке многоточия рядом с полем Select Or Enter A Database Name (Выберите или введите имя базы данных), выберите базу данных Students.mdb, расположенную в папке c:\vbnet03sbs\ Гл.19, а затем щелкните на Открыть. Ваш экран будет выглядеть примерно так.

Откройте в

Теперь, когда у вас есть действующее соединение с базой данных, вы должны создать адаптер данных для получения конкретной информации из этой базы данных, которая будет использоваться в вашей программе. Адаптер данных определяет конкретную информацию, которую вы используете, и служит как основа для объекта набора данных (dataset), которые вы используете в вашей программе. Создание адаптера данных - обязательный шаг для использования набора данных, так как некоторые базы данных сильно структурированы и имеют множество таблиц - гораздо больше, чем требуется использовать в одной программе. Вы можете рассматривать адаптер данных как некий
Visual Studio предоставляет несколько механизмов для создания в программе адаптеров данных. Простейшим способом является перетаскивание значков таблицы из
Откройте Область элементов, а затем щелкните на закладке Data. Закладка Data содержит элементы управления, которые в программах помогают осуществлять доступ к данным. Если вы знакомы с Visual Basic 6, то вы увидите, что элементы управления Data и ADO Data больше не поддерживаются. Вместо этого вы осуществляете доступ к данным, добавляя в область компонент вашей программы объект адаптера данных и объект набора данных.
Прочтите вводную информацию относительно адаптеров данных, а затем щелкните на Next (Далее). Появится второе диалоговое окно мастера, которое запрашивает имя адаптера данных. Ваш экран должен выглядеть примерно так.

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

Чтобы принять опцию Use

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

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

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

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

Чтобы создать набор данных для поля

Visual Studio также добавит в Solution Explorer (Обозреватель решений) поле с именем DsInstructors.xsd, представляющее схему базы данных, которую вы только что добавили в ваш проект. Эта схема является XML-файлом, который описывает таблицы, поля, типы данных и другие элементы набора данных. Типизированные наборы данных имеют ассоциированные с ними файлы схем (.xsd), а нетипизированные таких файлов не имеют. Преимущество типизированных наборов данных с файлами схем в том, что они позволяют использовать функцию
Теперь, когда вы создали набор данных, можно вывести в вашей форме записи из таблицы
Это самая интересная часть, но как это можно сделать? Вместо того чтобы воссоздавать в вашей форме таблицу базы данных Access, Visual Basic позволяет отображать только те поля и записи, которые вы хотите увидеть - можете предоставить вашим пользователям возможность увидеть всю таблицу информации из базы данных, а можете показать только те поля, которые вы хотите. В дополнение к этому можно предоставить механизм навигации так, что пользователи смогут просматривать все записи в базе данных, а можно отображать только конкретные записи. Наконец, можно позволить пользователям изменять или даже удалять информацию из базы данных, а можете ограничить их действия только просмотром записей из базы данных. Короче, Visual Basic позволяет создавать программу для просмотра базы данных - или внешний интерфейс - который предоставляет только ту информацию и те возможности доступа к данным, которые вы хотите предоставить своим пользователям. Хотя я этого и не говорил, большинство элементов управления на закладке Windows Forms окна Область элементов имеют встроенную возможность отображать в форме информацию из базы данных. В терминологии Visual Basic эти элементы управления обычно называются связанными элементами управления. Элемент управления называется связанным с источником данных, когда его свойство DataBindings содержит одно из полей набора данных. После установки соединения вы можете отображать информацию из базы данных с помощью методов и свойств, имеющихся в объектной модели ADO.NET. Элементы управления с закладки Windows Forms окна Области элементов, которые могут отображать информацию из базы данных, включают TextBox, ComboBox, ListBox, CheckBox, RadioButton, DataGrid и PictureBox.
DataGrid для отображения информации из базы данных обратитесь к лекции 20.В следующем упражнении показано, как для отображения информации из таблицы
TextBox и нарисуйте в центре формы объект текстового поля. Сделайте этот объект текстового поля достаточно широким, чтобы отображать имена и фамилии гипотетических инструкторов из базы данных Students.mdb.Label слева от объекта текстового поля нарисуйте объект метки.Button, нарисуйте в нижнем левом углу формы одну кнопку.Установите для объектов формы следующие свойства:
| Объект | Свойство | Установка |
|---|---|---|
| TextBox1 | Name | txtInstructor |
| Text | пустой (empty) | |
| Label1 | Name | lblInstructor |
| Text | Инструктор | |
| TextAlign | MiddleRight | |
| Button1 | Name | btnLoad |
| Text | Загрузка данных | |
| Form1 | Text | Форма ADO |
Ваша форма должна выглядеть примерно так, как показано на рисунке вверху следующей страницы. Теперь вы должны связать поле

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

Text окна Properties (Свойства) появятся имена набора данных, таблицы и поля. Теперь можно написать код программы, который загружает данные в набор данных и отображает их в объекте текстового поля.Восстановите прежнее состояние окна Properties (Свойства), сделайте двойной щелчок мышью на кнопке Загрузка данных, а затем введите в процедуре события btnLoad_Click, открывшейся в Редакторе кода, следующий код программы:
DsInstructors1.Clear() OleDbDataAdapter1.Fill(DsInstructors1)
Вы должны заполнить адаптер данных данными вручную с помощью метода Fill, который затем загружает информацию из определенного вами ранее набора данных в объект текстового поля. Хотя это может показаться дополнительным шагом, это легко делается с помощью двух строчек кода программы. В этом контексте метод Clear необходим для того, чтобы к набору данных не добавлялись записи, полученные с помощью предыдущих запросов к базе данных. Использование ADO.NET иногда требует дополнительных шагов, которые не требовались при использовании ADO и Visual Basic.
Form1_Load, чтобы объект текстового поля заполнялся при открытии формы на экране.Щелкните на кнопке Загрузка данных. Через мгновение в текстовом поле появится имя "Delamarco, Stefan", как показано на следующей иллюстрации. Это первое имя инструктора в базе данных Students.

Сейчас программа ADO Form отображает имя первого инструктора из базы данных Students.mdb. Но как просмотреть список имен инструкторов, и как переходить к первой или последней записи базы данных? ADO.NET хранит информацию о текущей записи и общем числе записей с помощью объекта, который называется CurrencyManager. Для каждого набора данных существует объект CurrencyManager, и каждая форма Windows имеет объект BindingContext, который хранит все объекты CurrencyManager формы.
В следующем упражнении вы создадите в программе ADO Form объекты кнопок с именами Первая запись, Последняя запись, Предыдущая запись и Следующая запись, которые предоставляют пользователю базовые возможности навигации по базе данных. После того, как вы создадите в форме эти кнопки, вы добавите в каждую процедуру события Click этих кнопок код программы, который с помощью объекта BindingContext, набора данных DsInstructors1 и таблицы
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 таблицы 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 с помощью минимального количества кода программы я использовал здесь математический оператор +=. Теперь вы запустите обновленную программу и протестируете кнопки навигации, только что созданные вами.
Чтобы отобразить следующую запись из базы данных, щелкните на кнопке Следующая запись. Ваша форма будет выглядеть примерно так.

BindingContext.В дополнение к предоставлению в вашей форме базовых инструментов для навигации вы можете предоставить некую индикацию текущего номера записи, а также общего числа записей в наборе данных. Вы можете сделать это, создав в форме объект метки, который будет отображать текущую позицию. Значение текущей позиции хранится в свойстве Position объекта BindingContext. Если вы хотите обновлять текущую позицию каждый раз, когда используются кнопки навигации, создайте в верхней части кода программы формы процедуру, которая будет определять текущую позицию и отображать ее в форме.
В следующем упражнении вы создадите процедуру с именем Count, которая объявляет две переменные, хранящие общее число записей и номер текущей записи, а затем отображает эту информацию с помощью свойства Text новой метки с именем lblCount.
Label и нарисуйте прямо под текстовым полем широкую метку.Name этой метки равным "lblCount".Text этой метки равным "Запись 0 из 0".Введите в процедуре 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 (Начать).
Щелкните на кнопке Загрузка данных. Форма заполнится данными и появится имя первого инструктора. В дополнение к этому под текстовым полем в только что созданной вами новой метке появится текст Запись 1 из 9. Ваша форма должна выглядеть примерно так.

Count работает также и для этих навигационных кнопок.Вы написали на Visual Basic и ADO.NET вашу первую оболочку для базы данных. В этом примере вы использовали базу данных Microsoft Access. Однако вы обнаружите, что базовые методики доступа к данным других типов, включая базы данных SQL Server и базы данных, хранящихся в удаленных хранилищах, очень похожи на эту. Причина этой одинаковости заключается в распределенной архитектуре ADO.NET, которая использует один и тот же механизм для установления соединения, настройки адаптеров данных и создания наборов данных.
Хотя для установки базового соединения и настройки в сессии ADO.NET требуется выполнить несколько шагов, преимущество этой предварительной работы состоит в том, что манипуляции с информацией из базы данных становятся универсальным процессом. Это верно даже тогда, когда используемые вами данные получаются из удаленного источника или являются результатом объединения различных таблиц базы данных или форматов данных. В следующей лекции вы продолжите работать с информацией из базы данных, и научитесь как использовать элемент управления DataGrid для одновременной работы с несколькими записями базы данных.
Техники доступа к данным, обсуждаемые в этой лекции, были разработаны для использования в среде форм Windows - базовой среде Visual Studio, которую вы использовали для создания большинства программ из этой книги. Однако вы также можете использовать техники программирования ADO.NET в среде веб-форм, что позволяет совместно использовать источники данных из интернета и писать оболочки для баз данных, которые доступны через веб-браузер. Большинство различий между средами форм Windows и веб-форм описано в лекции 22 . За дополнительной информацией по написанию приложений баз данных в среде веб-форм обратитесь к справочной системе Visual Basic.
| Чтобы | Сделайте следующее |
|---|---|
| Установить соединение с базой данных | Щелкните на команде |
| Создать адаптер данных | Щелкните на закладке Data (Данные) в окне Toolbox (Область элементов), перетащите в форму элемент управления OleDbDataAdapter или элемент управления SqlDataAdapter, а затем укажите в Data |
| Создать набор данных | Щелкните на команде Generate Dataset (Создать dataset) в меню Data (Данные), укажите имя набора данных, а затем убедитесь, что установлен флажок Add This Dataset To The Designer (Добавить этот dataset в конструктор). |
| Связать элемент управления формы Windows с активным набором данных | Добавьте в форму подходящий элемент управления, откройте окно Properties (Свойства), а затем установите свойства категории DataBinding этого элемента управления равными требуемому полю (столбцу) из набора данных. (Одним из наиболее полезных свойств категории DataBinding является Text.) |
| Заполнить набор данных данными и вывести их в связанном элементе управления в форме Windows | Поместите в процедуру события, которая должна заполнять элементы управления формы, следующий оператор программы. (Замените имена адаптера и набора данных вашими собственными.) OleDbDataAdapter1.Fill(DsInstructors1) |
| Добавить в форму Windows элементы управления для навигации | Создайте в форме объекты кнопок и добавьте в каждую из их процедур события Click операторы, которые обновляют свойство Position объекта BindingContext. Например, следующий оператор программы отображает следующую запись из таблицы с именем Me.BindingContext(DsInstructors1, _ "Instructors").Position += 1 |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.