Главная страница
Навигация по странице:

  • Выполнение работы

  • Лабораторная по базам данных №2. Лабораторная работа 2 по базам данных


    Скачать 154 Kb.
    НазваниеЛабораторная работа 2 по базам данных
    Дата26.05.2021
    Размер154 Kb.
    Формат файлаdoc
    Имя файлаЛабораторная по базам данных №2.doc
    ТипЛабораторная работа
    #210126

    Лабораторная работа №2 по базам данных

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



    Задание (Это нужно сделать с помощью запросов к базе данных):

    - Кнопка «Всё» отображает все записи в таблице.

    - Кнопка «Начинается с К» отображает все записи таблицы, в которых называние страны начинается с буквы К.

    -Кнопка «Содержит К» отображает все записи таблицы, в которых называние страны содержит букву К.

    -Кнопка «Северная Америка» отображает все записи таблицы, в которых поле континент содержит Северная Америка.

    -Кнопка «Южная Америка» отображает все записи таблицы, в которых поле континент содержит Южная Америка.

    -Кнопка «Сортировать» сортирует таблицу по полю «Население». (Это можно выполнить как запросом, так и с помощью управления элементом DVG)

    -Текстовое поле, такое, что при вводе туда некого значения, отображаются все записи таблицы, в которых поле «Столица» начинается с этого значения.

    Выполнение работы:

    1. Прежде всего, создайте и заполните базу данных со следующими полями: Код(РК), Страна, Столица, Континент, Население. Добавьте на форму элемент DataGridView и выгрузите в него созданную базу данных (процесс выгрузки подробно описан в тексте к предыдущей лабораторно работе (Лабораторная работа по базам данных №1,2)). Добавьте на форму нужные по заданию кнопки и текстовое поле.

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

    Прежде всего, запрос нужно создать: В обозревателе объектов дважды щелкнем по файлу DataSet***.xsd, откроется окно следующего вида.



    В таблице **TableAdapter мы видим список всех запросов, которые применяются к нашей таблице. Щелкнем ПКМ по **TableAdapter и в появившемся контекстном меню выберем пункт добавить запрос.



    Откроется мастер создания запроса: Выбираем «использовать инструкции SQL», жмем далее, в следующем окне «Инструкция SQL возвращающая строк», жмем далее. Перед нами открылось окно непосредственно с запросом.



    Можно написать запрос вручную (предпочтительнее) или использовать построитель запросов. Жмем «Готово» и видим, что запрос добавился в **tableAdapter.

    Запрос можно переименовать для удобства. В свойствах выбираем в Generate Methods строку Fill, в свойстве FillMethodName указываем имя запроса (Разница методов Fill и GetData в том что первый только заполняет таблицу, а второй возвращает данные). Как мы видим, запрос не принимает никаких значений, т.к. этот запрос является статическим.

    Теперь рассмотрим процесс создания параметрического запроса.

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



    Напишем здесь параметризированный запрос, как можно видеть на картинке, вместо конкретного значения поля континент мы использовали параметр @cap,

    Где cap - имя параметра. Жмем «Готово», появляется ошибка, нажимаем ОК потом может вылезти еще раз ошибка на нее тоже ОК. Не стоит беспокоиться, просто так как мы еще не добавили в свойства запроса то, что он имеет параметры, то Visual считает что мы не правы (Что очень странно, т.к. пока запрос не создан, то добавить в свойства ничего нельзя). Итак, нам нужно добавить в свойства нашего запроса тот факт, что он параметризированный. Выбираем запрос, заходим в свойства, там выбираем поле Parameters, открываем коллекцию



    Жмем «Добавить»



    В поле ParameterName вводим тот параметр, который мы указали в самом запросе, в данном случае это @cap. Жмем ОК и видим как изменился наш запрос:



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

    !ПРИМЕЧАНИЕ В параметризированном запросе количество параметров может быть любым, более того сам запрос может быть выполнен в виде параметра и принимать строковое значение содержащее весь нужный нам запрос целиком.

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

    [ссылка на форму] . [имя элемента tableadapter к которому принадлежит созданный нами запрос] . [Имя запроса] ([Имя таблицы в датасете, над которой мы будем работать], [Параметры, если запрос параметризированный, в противном случае ничего здесь не пишем] );

    Например, вызов простого статического запроса Fill, который будет заполнять DGV всем содержимым заданной таблицы (этот запрос есть по умолчанию и создавать его не нужно):

    this.страныTableAdapter.Fill(this._2DataSet.Страны);
    А теперь вызов параметризированного запроса:

    SELECT [Название страны], Столица, Континент, Население

    FROM Страны

    WHERE Континент = @cap
    this.страныTableAdapter.Z2(this._2DataSet.Страны, "Южная Америка");
    Этот запрос выдаст нам все записи, в которых поле континент равно передаваемому параметру, в данном случае «Южная Америка»

    Fill и Z2 в вызовах – имя запроса, оно должно совпадать с тем как Вы называли нужный Вам запрос в таблице запросов.
    Как только запрос будет выполнен, например по нажатию кнопки, содержимое таблицы будет автоматически обновлено. Для того чтобы избежать ошибок в случае если запрос некорректный, рекомендуется использовать try – catch.
    private void button1_Click(object sender, EventArgs e)

    {

    try

    {
    this.страныTableAdapter.Z2(this._2DataSet.Страны, "Северная Америка");

    }

    catch (System.Exception ex)

    {

    System.Windows.Forms.MessageBox.Show(ex.Message);

    }

    }

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


    написать администратору сайта