Transcript pps

Лекция 8

    

Базы данных

Коллекции Терминология БД Связь между таблицами База данных «Библиотека» Объект DataGridView Кафедра Прикладной математики М-703, тел. 362-79-62 К.т.н., профессор Глаголев Виктор Борисович, комн. Ж-405б, тел. 362-73-28 http://glagvik.narod2.ru/index.htm

Отладка

 Виды ошибок  Режимы среды  Точка останова  Пошаговое выполнение программы

Коллекции

Коллекция – это группа объектов, каждый из которых может быть любого типа. Коллекция позволяет производить некоторые действия со всеми входящими в коллекцию объектами.

Коллекция в свою очередь является объектом, она обладает свойствами и методами.

Так свойство

Count

содержит число объектов коллекции.

Некоторые методы коллекций: Имя метода Назначение

Item Add Remove

Позволяет коллекции.

Включает коллекции.

Исключает коллекции.

выбрать объект объект в из объект в состав состава

Коллекция должна быть объявлена программистом с применением синтаксиса:

Public/Private/Dim ИмяКоллекции As _ New Collection

Для обработки всех элементов коллекции в VB имеется специальная инструкция цикла For Each … In … Next (для каждого … в …).

Синтаксис этой инструкции:

For Each

Экземпляр

In

[Инструкции] ИмяКоллекции [

Exit For

] [Инструкции]

Next

Эта инструкция экземпляра коллекции.

цикла обеспечивает выполнение группы инструкций для каждого Эта инструкция цикла может быть применена также для массива.

Экземпляр – это имя переменной типа Object.

Допускается досрочный выход из цикла с помощью инструкции Exit For.

Рассмотрим пример.

Объявлены коллекция и три переменные, которые включены в коллекцию. Затем все содержимое коллекции выведено в текстовом поле.

Private Sub Button1_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click

Dim List As New Collection Dim i As Integer Dim s As Single Dim st As String Dim v As Object

i = 3 s = 1.5

st = "Test" List.Add(st) List.Add(s) List.Add(i) For Each v In List TextBox1.AppendText(v.ToString & vbCrLf) Next End Sub

Результат работы подпрограммы Button1_Click

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

Controls . Коллекция включает все управляющие элементы всех форм.

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

База данных предназначена для хранения и извлечения сложной структурированной информации.

Базы данных поддерживаются специальными данных (СУБД).

базы данных.

программами, которые называются системами управления базами Различают базы данных иерархические, сетевые и реляционные.

Наиболее распространены реляционные

В реляционных базах данные хранятся в связанных таблицах, в каждой из которых хранится информация, относящаяся к одной сущности.

Так, в базе данных, предназначенной для хранения информации о книгах библиотеки, будет: - одна таблица

Книги

с перечнем изданий; - еще одна таблица об авторах;

Авторы

с информацией - еще одна таблица

Издательства

информацией об издательствах.

с

В первой таблице для каждой книги может храниться ее название, количество страниц, аннотация.

Во второй будут храниться данные об авторах изданий: фамилия, имя, отчество.

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

Строка таблицы базы данных называется записью.

Отдельная часть записи, принадлежащая к конкретной колонке таблицы, называется полем.

Связь между таблицами

Каждая таблица должна иметь столбец, значения данных в котором не повторяются.

сведения В носят базе данных название такие первичного ключа таблицы.

Первичный ключ применяется для его нельзя изменять.

применять счетчик.

связи с другими таблицами. Он не может не иметь значения. Это значение должно быть уникальным в пределах столбца таблицы, В качестве первичного ключа удобно

Вернемся к рассмотренному примеру о книгах. Таблица книг связана с таблицей авторов. Но один и тот же автор может быть автором нескольких книг. Такая связь между таблицей таблице авторов.

книг книг и следует таблицей авторов представляет собой отношение «один-ко многим». Для реализации такой связи между таблицей книг и таблицей авторов в поместить поле вторичного ключа, в котором для каждой книги указывается значение первичного ключа соответствующего автора в таблице

Учтем, что у книги может быть не один, а несколько авторов.

С другой стороны, отдельный нескольких книг. Следовательно, для каждой записи таблицы книг может существовать несколько записей в таблице авторов. И, наоборот, для каждой записи в таблице авторов автор может может быть существовать автором несколько записей в таблице книг.

Такой тип связи называется между отношением многим».

таблицами «многие-ко-

Это проблема. Попытку сохранить данные о книге в одной записи, добавив поля для каждого отдельного автора книги, нельзя признать удачной. Сколько бы не было предусмотрено возможностей включить для книги новое поле для дополнительного автора, этих полей может оказаться недостаточно.

И в то же время, когда авторов книги немного, лишние поля останутся пустыми, что приведет к нерациональному использованию памяти.

Решением этой проблемы является создание третьей, связующей, таблицы, имеющей всего два поля. С помощью связующей таблицы отношение «многие-ко многим» разбивается на два отношения «один-ко-многим».

В первое поле связующей таблицы записывается первичный ключ книги. Во второе поле записывается первичный ключ автора.

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

4 5 2 3 1 Код Тип связи «многие-ко-многим»

Книги Авторы

Название Код Фамилия Visual Basic 2008 1 Иванов LINQ 2 Троелсен Справочник 3 Дашкова Примеры 4 Петров Графика 5 Культин 1 2 4 5

КнигиАвторы

Код книги Код автора 1 1 3 2 2 4

Модель ADO.NET

VB.NET

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

отображать, к данным,

Эта модель позволяет работать с мощными базами данных, созданными одной из СУБД, например: Microsoft Access, Microsoft FoxPro, Paradox, Oracle и Microsoft SQL Server.

Далее работа с базой данных будет рассмотрена на примере базы данных Access.

Работа с базами данных другого типа проходит аналогично.

В ADO.NET для получения и изменения информации в базе данных необходимо: 1.

Установить соединение (Connection) с базой данных.

2.

Создать адаптер данных (Data adapter).

Управляет получением данных из базы данных и обратной отправкой изменений в данных.

3.

Создать нескольких набор таблиц, данных (Dataset).

Представляет копию данных одной или с которыми Вы планируете работать.

База данных «Библиотека»

В качестве информацию о примера учебную базу данных, содержащую книгах проходит аналогично.

рассмотрим библиотеки, созданную с помощью СУБД Access.

Работа с базами данных другого типа Вся информация в этой базе данных содержится в четырех таблицах: Книги , Авторы таблице , Издательства КнгАвт .

и связующей

Таблица Книги

Таблица Авторы

Таблица Издательства

Связующая таблица КнгАвт

Связь таблиц

Отображение информации с помощью объекта DataGridView

Элемент управления DataGridView (отображение сетки данных) отображает данные таблицы в виде строк и столбцов.

Применим четыре объекта DataGridView для отображения таблицы Авторы , таблицы Книги Издательства , таблицы и таблицы КнгАвт базы данных Библиотека2 .

Эти управляющие элементы могут быть получены простым перетаскиванием на форму таблиц из окна Data Sources .

Из окна Data Sources нужно поочередно перетащить каждую из Издательства на и соответствующую таблиц: КнгАвт .

Книги , форму Авторы , В результате этих действий на каждой форме появится навигатор BindingNavigator (панель в верхней части формы) и сетка данных.

Если после этого посмотреть на код каждой формы проекта, то можно увидеть, что система автоматически создала две подпрограммы:

Поясним назначение этого сгенерированного системой кода на примере кода формы Form1.

Подпрограмма формы Form1 таблицы Form1_Load обеспечивает Книги Библиотека2DataSet при набора загрузке заполнение данных данными из базы данных (применяется метод Fill) .

Подпрограмма КнигиBindingNavigatorSaveItem_Click выполняет изменения сохранение в данных отображаемой после их таблице КнигиDataGridView кнопке .

Запускается эта подпрограмма при нажатии на КнигиBindingNavigatorSaveItem , находящейся на панели навигации Form1 .

Сохранение данных выполняется за три шага: 1. Проверка корректности введенных данных: Validate() EndEdit() .

.

2. Сохранение изменений в наборе данных: 3. Обновление записей в базе данных: Me.TableAdapterManager.UpdateAll _ (Me.Библиотека2DataSet) .

Теперь, наконец, если запустить проект, то можно убедиться, что можно редактировать, добавлять и удалять.

видеть содержащуюся в базе данных информацию.

Эту информацию в базе данных можно

Отладка

Отладка – это устранение в программе причин, возникновения ее некорректного выполнения, а также применение защиты от некорректных действий пользователя.

Программа может не быть корректной по следующим причинам: •Синтаксические ошибки (состоят в нарушении правил синтаксиса).

•Логические ошибки.

•Исключения (невозможно продолжение корректного выполнения программы).

О синтаксических ошибках среда сообщает на этапе ввода программного кода. Те части кода, где обнаружены синтаксические ошибки, среда VB.NET

подчеркивает синей волнистой линией, сопровождая подсказкой существо ошибки. Это упрощает обнаружение и исправление синтаксических ошибок.

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

 Попытка деления числа на нуль.

   Выход аргумента функции за пределы области определения функции.

Переполнение разрядной сетки в случае целочисленных данных.

Ввод символьных данных вместо ожидаемых числовых (или наоборот).

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

Для всех выявления возможных причин являются логической ошибки и ее устранения требуется обширное тестирование.

Тестирование программы на таких исходных данных, для которых состоит результаты в прогоне получены заранее вручную.

VB предлагает некоторые эффективные инструменты для поиска источников ошибок.

Режимы среды VB

Среда VB.NET может находиться в одном из трех состояний: Design (проектирование).

Running ( выполнение).

Debugging ( пауза).

Режим паузы

Приложение запускается клавиши F5 или кнопки панели инструментов среды нажатием

Start Debugging

VB и оказывается в режиме выполнения.

Переход в режим паузы из режима выполнения выполняется кнопке инструментов.

Break All

щелчком на стандартной панели

Недостаток такого способа перехода в том, что заранее не известно, при выполнении какой инструкции кода будет нажата кнопка

Break All

и произойдет переход в режим паузы.

В режиме паузы можно выбирать один из вариантов: программы продолжать или проектирования.

перейти выполнение в режим

Из режима паузы в режим выполнения можно перейти, нажав повторно клавишу F5 или щелкнув на кнопке Continue.

Обратите внимание, что в режиме паузы кнопка Start Debugging носит название

Continue.

Название текущих режимов Debugging Running и отображается в квадратных скобках в строке заголовка VB.

В режим паузы вы попадаете и тогда, когда во время выполнения программы, запущенной из среды разработки, возникло необрабатываемое исключение.

При этом выдается сообщение об исключении одного из с возможностью вариантов: выбора завершение выполнения или переход в режим паузы.

Большое преимущество режима паузы заключается в том, что выполнение программы приостанавливается в месте возникновения ошибки.

Другим важным моментом является то, что при этом сохраняются значения всех текущих переменных и их можно увидеть.

В среде разработки VB инструменты поиска ошибок объединены на стандартной панели инструментов для основным средствам отладки.

доступа к

Точка останова

Есть переключения приложения в режим паузы. Это возможно благодаря точке останова ( строка еще одна

Breakpoint

).

возможность Точка останова – это выделенная программы, на которой автоматически останавливается выполнение программы.

По достижении этой строки программы VB переходит в режим паузы.

Если щелкнуть левой кнопкой мыши на полосе индикатора (серая вертикальная полоса слева от программного кода), то в этом месте появится красная точка и находящаяся рядом строка закрашивается красным цветом.

Точки останова предназначены для принудительной остановки программы в нужном месте и перехода в режим паузы.

В результате становятся доступными все средства отладки.

В режиме паузы VB особым образом выделяет строку, которая должна выполняться следующей. Сама строка выделяется желтым цветом, а на полосе индикатора рядом с ней появляется желтая стрелка.

Если выполнение программы прерывается в точке останова, то оба выделения комбинируются.

Чтобы программы продолжить с любой выполнение другой строки, необходимо желтую стрелку на полосе индикатора просто перетащить мышью на нужную строку.

Пошаговое выполнение программы

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

программы.

Существует несколько различных команд

Шаг с заходом (Step into)

Для выполнения следует нажать кнопку

into Step

на стандартной панели инструментов.

При пошаговом выполнении перемещается на одну строку.

строки кода выполняются одна за другой. После выполнения одной строки кода маркер следующей строки

Шаг с обходом (Step Over)

Шаг вызов с обходом процедуры подобен как шагу с заходом. Различие проявляется только при вызове текущей процедурой других процедур. Если при шаге с заходом осуществляется переход в вызываемую процедуру, то шаг с обходом выполняет единичный оператор.

Шаг с обходом выполняется нажатием кнопки

Step Over

на стандартной панели пошагового выполнения представляет интерес процедур.

процедуру.

инструментов.

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

Шаг с выходом (Step Out)

Команда Step Out позволяет выполнить оставшуюся часть текущей процедуры.

Отображение значений

Кроме контроля хода выполнения программы важной задачей инструментов отладки VB является проверка значений переменных и выражений.

Контроль значений возможен только в режиме паузы.

Самый простой вариант просмотра значения переменной или выражения – использование окна Quick Info (быстрая информация). Для открытия этого окна достаточно установить курсор мыши на соответствующей переменной в окне кода.

Если необходимо увидеть значение выражения, его следует выделить, а затем установить на нем курсор мыши.

Окно Autos (видимые переменные)

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

Для открытия этого окна следует вызвать команду меню Debug, Windows, Autos.

Окно Autos (видимые переменные)