Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3 семестр / 4 лаба

.pdf
Скачиваний:
6
Добавлен:
01.12.2023
Размер:
419.54 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

SQL ОПЕРАТОРЫ ДЛЯ БД СУБД MICROSOFT SQL SERVER В

ПРИЛОЖЕНИИ MICROSOFT VISUAL

Отчет по лабораторной работе №4

по дисциплине «Безопасность систем баз данных»

Студент гр. 711-2

Е. П. Толстолес

________.2023

Принял

Младший преподаватель каф. КИБЭВС

__________ ________ Р.С. Дастанович

________.2023

2023

1 Введение

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

запросов в приложении Microsoft Visual Studio для своей предметной области

(расчет заработной платы).

2

2 Ход работы

Создавать запросы можно как через SQL Server Management, так и через Visual Studio. В данной работе рассмотрим оба способа. Для работы через SQL Server Management выполним соединение с сервером и для разработанной базы данных. Создадим запрос соответствующей кнопкой.

Выполним запрос, представленный на рисунках 2.1 и 2.2.

Рисунок 2.1 – Создание запроса

Рисунок 2.2 – Вывод результатов запроса

Помимо полного выведения какой-либо таблицы можно сделать выборку. Для выборки определенных полей из определенной таблицы на примере таблицы Заказ (Рисунок 2.3):

Рисунок 2.3 – Выборка

SELECT [ID специфики], [Описание заказа] FROM dbo.Заказ

3

Иногда возникает потребность трактовать значение одного типа, как значение другого типа. Например, использовать числовое значение как символьную строку или наоборот. В этом случае применяют функцию CAST ( <значение>AS<тип данных> ) Функция CAST делает копию значения,

преобразуя его к указанному типу данных. При этом не следует забывать о множестве типов данных, в которое может быть преобразовано значение. (Рисунок 2.4).

SELECT [ID специфики] , CAST([ID специфики] AS decimal(16, 1))

FROM Специфика

Рисунок 2.4 - CAST

Так же можно делать выборку из нескольких таблиц. Для выборки данных по продажам из двух таблиц БД Заказ и Специфика. Данные таблицы связаны по ID специфики (рисунок 2.5):

SELECT [ID компании], [Описание заказа], [Среда разработки], [Язык программирования], [Срок выполнения]

FROM Заказ, Специфика

Рисунок 2.5 - Выборка по двум таблицам

4

Для запросов можно использовать конструктор запросов. Для этого можно выбрать Создать запрос в редакторе (Рисунок 2.6)

Рисунок 2.6 – Создать запрос в редакторе

И выберем необходимые таблицы, как показано на рисунке 2.7.

Рисунок 2.7 -Добавление таблиц

Затем необходимые поля с необходимыми данными, показанные на рисунке 2.8

5

Рисунок 2.8 – Конструктор запросов

Следующая часть работы будет выполнена в Visual Studio.

Для начала приведем пример запроса без выборки (рисунки 2.9 – 2.11) и

реализуем полную запись SELECT, для примера представим таблицы Компания, Заказ, Специфика.

6

DataTable FillDataGridView(string sqlSelect)

{

SqlConnection connection = new SqlConnection(Properties.Settings.Default.Lab1ConnectionString); SqlCommand command = connection.CreateCommand(); command.CommandText = sqlSelect;

SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command;

DataTable table = new DataTable(); adapter.Fill(table); connection.Close();

return table;

}

private void Specifika_CheckedChanged(object sender, EventArgs e)

{

dataGridViewSelect.DataSource = FillDataGridView("SELECT * FROM

Специфика");

}

private void Zakaz_CheckedChanged(object sender, EventArgs e)

{

dataGridViewSelect.DataSource = FillDataGridView("SELECT * FROM Заказ");

}

private void Kompania_CheckedChanged(object sender, EventArgs e)

{

dataGridViewSelect.DataSource = FillDataGridView("SELECT * FROM

Компания");

}

Рисунок 2.9 – Пример запросов (Компания)

7

Рисунок 2.10 – Пример запросов (Заказ)

Рисунок 2.11 – Пример запросов (Специфика)

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

8

запросов изменения данных (INSERT, UPDATE, DELETE) на примере

таблицы Компания. Результат работы программы представлен на рисунке

2.12–2.14.

void InsertKompania()

{

if ((String.IsNullOrEmpty(textBox1.Text)))

{

MessageBox.Show("Введите название компании", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return;

}

string sqlInsert = @"INSERT INTO dbo.Компания (Название, Email) VALUES (@nazvanie, @EMAIL)";

SqlConnection connection = new SqlConnection(Properties.Settings.Default.Lab1ConnectionString);

connection.Open();

SqlCommand command = connection.CreateCommand(); command.CommandText = sqlInsert; command.Parameters.AddWithValue("@nazvanie", textBox1.Text); command.Parameters.AddWithValue("@EMAIL", textBox2.Text);

try

{

command.ExecuteNonQuery();

}

catch (Exception err)

{

MessageBox.Show("Ошибка выполнения запроса.\n" + err.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

connection.Close();

}

private void button1_Click(object sender, EventArgs e)

{

InsertKompania();

dataGridView1.DataSource = FillDataGridView("SELECT * FROM Компания");

}

void UpdateKompania()

{

if ((String.IsNullOrEmpty(textBox1.Text)))

{

MessageBox.Show("Введите название компании", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return;

}

if ((String.IsNullOrEmpty(textBox3.Text)))

{

MessageBox.Show("Обязательно введите ID компании для обновления данных", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return;

}

string sqlUpdate = "UPDATE dbo.Компания SET Название = @название, EMAIL=@EMAIL WHERE [ID компании] = @ID_компании";

SqlConnection connection = new SqlConnection(Properties.Settings.Default.Lab1ConnectionString);

connection.Open();

SqlCommand command = connection.CreateCommand();

9

string sqlValues = "";

if (!String.IsNullOrEmpty(textBox1.Text)) sqlValues += "Название=@название,";

if (!String.IsNullOrEmpty(textBox2.Text)) sqlValues += "EMAIL=@EMAIL,";

if (!String.IsNullOrEmpty(textBox1.Text)) command.Parameters.AddWithValue("@Название", textBox1.Text);

if (!String.IsNullOrEmpty(textBox2.Text)) command.Parameters.AddWithValue("@EMAIL", textBox2.Text);

command.CommandText = String.Format(sqlUpdate, sqlValues);

command.Parameters.AddWithValue("@ID_компании", textBox3.Text);

try

{

command.ExecuteNonQuery();

}

catch (Exception err)

{

MessageBox.Show("Ошибка выполнения запроса:\n" + err.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

connection.Close();

}

private void ID_Click(object sender, EventArgs e)

{

UpdateKompania();

dataGridView1.DataSource = FillDataGridView("SELECT * FROM Компания");

}

void DeleteKompania()

{

if (String.IsNullOrEmpty(textBox3.Text))

{

MessageBox.Show("Обязательно укажите ID компании, данные которого необходимо удалить", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return;

}

string sqlDelete = @"DELETE FROM dbo.Компания WHERE [ID компании] = @id_kompanii";

SqlConnection connection = new SqlConnection(Properties.Settings.Default.Lab1ConnectionString);

connection.Open();

SqlCommand command = connection.CreateCommand(); command.CommandText = sqlDelete;

command.Parameters.AddWithValue("@id_kompanii", textBox3.Text);

try

{

command.ExecuteNonQuery();

}

catch (Exception err)

{

MessageBox.Show(err.Message, "Ошибка удаления");

}

connection.Close();

10

Соседние файлы в папке 3 семестр