ДЕМОНСТРАЦИЯ РАБОТЫ ПРИЛОЖЕНИЯ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ» (МГУПИ)

Институт комплексной безопасности и специального приборостроения

направление 09.03.04 «Программная инженерия»

Кафедра КБ-3 «Управление и моделирование систем»

Дисциплина «Клиент-серверые базы данных»

курсовая работе на тему:

Реализация базы данных

«Каталогизация ПО»

 

Студент____________________________________________________Щукин Н.Л.

Группа ИТ-6.1301 шифр 140736КБ

Руководитель ____________________________________________________________

Москва 2016

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ

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

Институт комплексной безопасности и специального приборостроения

направление 09.03.04 «Программная инженерия»

Кафедра КБ-3 «Управление и моделирование систем»

Дисциплина «Клиент-серверые базы данных»

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

 

 

Студент В.В. Каменский группа ИТ-6.1301 шифр 130349ИТ

1 Тема: «Реализация базы данных «Автоматизированная система для расчетов с потребителями электроэнергии»»

2 Срок представления к защите: 28 декабря 2015 года

3 Исходные данные для разработки: вариант № 49

4 Содержание пояснительной записки:

Титульный лист

Задание

Содержание

Введение

Постановка задачи

Схема базы данных

Выполненные задания

Листинг программы

Демонстрация работы приложения

Список используемых источников

Руководитель_____________________________________________________________

Задание принял к исполнению----------- Щукин Н.Л.

Москва 2017

СОДЕРЖАНИЕ

Введение………………………………………………………………………..………….4

Постановка задачи…………..…………………………………………………………….8

Схема базы данных………………………………………………………………………11

Выполненные задания…….……………………………………………………………..13

Листинг программы…….……………………………………………………………......18

Демонстрация работы приложения…………………………………………………......42

Список используемых источников……………….…………………………………….44


ВВЕДЕНИЕ

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

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

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

Логическую структуру хранимых в базе данных называют моделью представления данных. К основным моделям представления данных относятся следующие: иерархическая, сетевая, реляционная, постреляционная, многомерная и объектно-ориентированная.

Система управления базами данных (СУБД) – это комплекс языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями. Обычно СУБД различают по используемой модели данных. Так, СУБД, основанные на использовании реляционной модели данных, называют реляционными СУБД.

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

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

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

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

Для работы с хранящейся в базе данных информацией СУБД предоставляет программам и пользователям следующие два типа языков:

· язык описания данных – высокоуровневый непроцедурный язык декларативного типа, предназначенный для описания логической структуры данных;

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

SQL (Structured Query Language) – структурированный язык запросов – сочетает в себе свойства языков обоих типов – описания и манипулирования данными.

Механизм транзакций используется в СУБД для поддержания целостности данных в базе. Транзакцией называется некоторая неделимая последовательность операций надданными БД, которая отслеживается СУБД от начала и до завершения. Если по каким-либо причинам (сбои и отказы оборудования, ошибки в программном обеспечении, включая приложение) транзакция остается незавершенной, то она отменяется.

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

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

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

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

• исключение некоторых типов избыточности;

• устранение некоторых аномалий обновления;

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

• упрощение процедуры применения необходимых ограничений целостности.

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

Первая нормальная форма

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

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

Вторая нормальная форма

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

Третья нормальная форма

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

 

 


 

ПОСТАНОВКА ЗАДАЧИ

 

Разработать клиент-серверное приложение, серверная часть которой реализована на MS SQL Server (или Oracle), представляющая собой модель предметной области в соответствии с вариантом задания. В рамках заданной предметной области реализовать заданную (по варианту) схему отношений, т.е. выделить сущности и их атрибуты, так чтобы связи между сущностями соответствовали представленной схеме. В рамках курсовой работы необходимо на стороне сервера реализовать и использовать при демонстрации приложения следующие компоненты:

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

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

a. Составной многотабличный запрос с параметром, включающий соединение таблиц и CASE-выражение;

b. На основе обновляющего представления (многотабличного VIEW), в котором критерий упорядоченности задает пользователь при выполнении;

c. Запрос, содержащий коррелированные и некоррелированные подзапросы в разделах SELECT, FROM и WHERE (в каждом хотя бы по одному);

d. Многотабличный запрос, содержащий группировку записей, агрегативные функции и параметр, используемый в разделе HAVING;

e. Запрос, содержащий предикат ANY, SOME или ALL;

 

3. Создать необходимые кластерные (по первичным ключам) и не кластерные индексы для увеличения скорости выполнения запросов;

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

5. Операции добавления, удаления и обновления реализовать в виде хранимых процедур (с параметрами) хотя бы для одной таблицы; для остальных допустимо использовать возможности связывания полей ввода в приложении с полями БД;

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

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

8. В запросе (из пункта 2 или в дополнительном к тому перечню) использовать собственную скалярную функцию, а в хранимой процедуре – векторную (или табличную) функцию. Функции сохранить в базе данных

9. Распределение прав пользователей: предусмотреть не менее двух пользователей с разным набором привилегий. Каждый набор привилегий оформить в виде роли.

 

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

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

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

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

СХЕМА БАЗЫ ДАННЫХ

 

 

CREATE TABLE test123.dbo.katalog (

id_katalog INT NOT NULL

,name VARCHAR(50) NOT NULL

,raspologenie VARCHAR(50) NOT NULL

,CONSTRAINT FK_katalog PRIMARY KEY CLUSTERED (id_katalog)

) ON [PRIMARY]

GO

 

CREATE TABLE test123.dbo.soderganie (

id_soderg INT NOT NULL

,dir VARCHAR(50) NOT NULL

,[file] VARCHAR(50) NOT NULL

,CONSTRAINT FK_soderg PRIMARY KEY CLUSTERED (id_soderg)

,CONSTRAINT FK_soderganie FOREIGN KEY (id_soderg) REFERENCES dbo.katalog (id_katalog)

) ON [PRIMARY]

GO

 

CREATE TABLE test123.dbo.tip (

id_tip INT IDENTITY

,CONSTRAINT FK_tip PRIMARY KEY CLUSTERED (id_tip)

,CONSTRAINT FK_tip2 FOREIGN KEY (id_tip) REFERENCES dbo.katalog (id_katalog)

) ON [PRIMARY]

GO

 

CREATE TABLE test123.dbo.vladelec (

id_vladelec INT IDENTITY

,name VARCHAR(50) NULL

,otch VARCHAR(50) NULL

,CONSTRAINT FK_vladelec PRIMARY KEY CLUSTERED (id_vladelec)

,CONSTRAINT FK_vladelec_katalog_id_katalog FOREIGN KEY (id_vladelec) REFERENCES dbo.katalog (id_katalog)

) ON [PRIMARY]

GO

ВЫПОЛНЕННЫЕ ЗАДАНИЯ

 

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

a) Составной многотабличный запрос с параметром, включающий соединение таблиц и CASE-выражение;

 

 

b) Запрос, содержащий коррелированные и некоррелированные подзапросы в разделах SELECT, FROM и WHERE (в каждом хотя бы по одному);

 

SELECT katalog.name

FROM katalog

WHERE raspologenie = 'C:'

 

c) Многотабличный запрос, содержащий группировку записей, агрегативные функции и параметр, используемый в разделе HAVING;

 

 

-- Список тарифов, стоимость которых превышает 400 копеек

SELECT katalog.name id_tip FROM katalog,tip

GROUP BY id_tip, id_katalog,katalog.name

HAVING COUNT(id_katalog) =id_tip;

 

d) Запрос, содержащий предикат ANY, SOME или ALL;

SELECT katalog.name FROM katalog

WHERE id_katalog = ANY (SELECT id_katalog FROM soderganie);

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

 

 

CREATE TRIGGER Triggerkatalog

ON katalog

INSTEAD OF DELETE

AS

BEGIN

DECLARE @katalogId int

SELECT @katalogId = id_katalog FROM deleted;

if @katalogId IN (SELECT id_katalog FROM katalog)

BEGIN

ROLLBACK

print('Удаляемый ПО используется, удаление невозможно')

END

END

 

 

5. Операции добавления, удаления и обновления реализовать в виде хранимых процедур (с параметрами) хотя бы для одной таблицы; для остальных допустимо использовать возможности связывания полей ввода в приложении с полями БД;

 

CREATE PROCEDURE updatekatalog (@updateId int, @updatekatalogId INT, @updatenameId NVARCHAR(50), @updateraspologenieId NVARCHAR(MAX), @updatedirId NVARCHAR(MAX), @updatefileId NVARCHAR(MAX), @updatetip NVARCHAR(MAX), @updatefam NVARCHAR(MAX), @updatevladelecId NVARCHAR(MAX))

AS

BEGIN

UPDATE katalog

SET id_katalog = @updatekatalogId, name = @updatenameId, raspologenie = @updateraspologenieId, dir = @updatedirId, [FILE] = @updatefileId, id_tip=@updatetip, id_vladelec = @updatevladelecId

WHERE id_katalog = @updateId;

END

 

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

 

CREATE PROCEDURE soderg(@id_soderg INT, @dir nvarchar(50), @file nvarchar(50))

AS

BEGIN

BEGIN TRANSACTION

INSERT INTO soderganie(id_soderg, dir,[file]) VALUES(@id_soderg, @dir, @file);

IF @dir=@file

ROLLBACK

COMMIT TRANSACTION

END

 

 

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

 

 

CREATE PROCEDURE updatekatalog (@updateId int, @updatename nvarchar(50), @updateraspologenie NVARCHAR(50))

AS

BEGIN

DECLARE my_cursor CURSOR

FOR SELECT ID FROM Tariffs;

OPEN my_cursor

DECLARE @id INT;

FETCH NEXT FROM my_cursor INTO @id;

WHILE @@FETCH_STATUS = 0

BEGIN

IF @updateId = @id

UPDATE katalog

SET id_katalog = 0

,name = ''

,raspologenie = ''

WHERE id_katalog = @updateId;

FETCH NEXT FROM my_cursor INTO @id;

END

CLOSE my_cursor;

DEALLOCATE my_cursor;

END

 

 

8. Распределение прав пользователей: предусмотреть не менее двух пользователей с разным набором привилегий. Каждый набор привилегий оформить в виде роли.

 

CREATE LOGIN [Admin] WITH PASSWORD=N'''1234321123321',

DEFAULT_DATABASE=[test123], DEFAULT_LANGUAGE=[русский], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

GO

EXEC sys.sp_addsrvrolemember @loginame = N'Admin', @rolename = N'sysadmin'

GO

ALTER LOGIN [Admin] DISABLE

GO

 

CREATE LOGIN [USER] WITH PASSWORD=N'123456',

DEFAULT_DATABASE=[test123], DEFAULT_LANGUAGE=[русский], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

GO

ALTER LOGIN [User] DISABLE

GO

 

 


ЛИСТИНГ ПРОГРАММЫ

Form1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace kursachlesko

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void label1_Click(object sender, EventArgs e)

{

 

}

 

private void button1_Click(object sender, EventArgs e)

{

ActiveForm.Hide();

Form2 frm = new Form2();

frm.ShowDialog();

Close();

}

 

private void button2_Click(object sender, EventArgs e)

{

ActiveForm.Hide();

Form3 frm = new Form3();

frm.ShowDialog();

Close();

}

}

}

Form2

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Data.SqlTypes;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace kursachlesko

{

public partial class Form2 : Form

{

string ConnectStr = @"Data Source=WIN-U8C7MPAU391;Initial Catalog = test123; Integrated Security = True;

user=Admin; database=test123; password=1234321123321;";

SqlConnection Connect = null;

 

public Form2()

{

InitializeComponent();

}

public void DoSql(string sql_query)

{

try

{

SqlConnection conn = new SqlConnection(ConnectStr);

conn.Open();

SqlDataAdapter sda = new SqlDataAdapter(sql_query, conn);

DataTable dt = new DataTable();

SqlCommand comm = new SqlCommand();

sda.Fill(dt);

 

}

catch

{

MessageBox.Show(@"Error");

}

 

}

 

private void button25_Click(object sender, EventArgs e)

{

ActiveForm.Hide();

Form4 frm = new Form4();

frm.ShowDialog();

Close();

}

 

private void button2_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO katalog (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox1.Text);

 

}

 

private void button1_Click(object sender, EventArgs e)

{

var Sqlcmd =new SqlCommand("INSERT INTO katalog (name) VALUES (@name)",Connect) ;

Sqlcmd.Parameters.AddWithValue("@name", textBox1.Text);

}

 

private void button3_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO katalog (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox1.Text);

}

 

private void button6_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO katalog (raspologenie) VALUES (@raspologenie)", Connect);

Sqlcmd.Parameters.AddWithValue("@raspologenie", textBox2.Text);

}

 

private void button5_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO katalog (raspologenie) VALUES (@raspologenie)", Connect);

Sqlcmd.Parameters.AddWithValue("@raspologenie", textBox2.Text);

}

 

private void button4_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO katalog (raspologenie) VALUES (@raspologenie)", Connect);

Sqlcmd.Parameters.AddWithValue("@raspologenie", textBox2.Text);

}

 

private void button9_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO soderganie (dir) VALUES (@dir)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox3.Text);

}

 

private void button8_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO soderganie (dir) VALUES (@dir)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox3.Text);

}

 

private void button7_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO soderganie (dir) VALUES (@dir)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox3.Text);

}

 

private void button12_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO soderganie (file) VALUES (@file)", Connect);

Sqlcmd.Parameters.AddWithValue("@file", textBox4.Text);

}

 

private void button11_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO soderganie (file) VALUES (@file)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox4.Text);

}

 

private void button10_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO soderganie (file) VALUES (@file)", Connect);

Sqlcmd.Parameters.AddWithValue("@file", textBox4.Text);

}

 

 

private void button15_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO tip (tip) VALUES (@tip)", Connect);

Sqlcmd.Parameters.AddWithValue("@tip", textBox5.Text);

}

 

private void button14_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO tip (tip) VALUES (@tip)", Connect);

Sqlcmd.Parameters.AddWithValue("@tip", textBox5.Text);

}

 

private void button13_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO tip (tip) VALUES (@tip)", Connect);

Sqlcmd.Parameters.AddWithValue("@tip", textBox5.Text);

}

 

private void button18_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO vladelec (fam) VALUES (@fam)", Connect);

Sqlcmd.Parameters.AddWithValue("@fam", textBox6.Text);

}

 

private void button17_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO vladelec (fam) VALUES (@fam)", Connect);

Sqlcmd.Parameters.AddWithValue("@fam", textBox6.Text);

}

 

private void button16_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO vladelec (fam) VALUES (@fam)", Connect);

Sqlcmd.Parameters.AddWithValue("@fam", textBox6.Text);

}

 

private void button21_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO vladelec (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox7.Text);

}

 

private void button20_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO vladelec (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox7.Text);

}

 

private void button19_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO vladelec (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox7.Text);

}

 

private void button24_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO vladelec (otch) VALUES (@otch)", Connect);

Sqlcmd.Parameters.AddWithValue("@otch", textBox8.Text);

}

 

private void button23_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO vladelec (otch) VALUES (@otch)", Connect);

Sqlcmd.Parameters.AddWithValue("@otch", textBox8.Text);

}

 

private void button22_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO vladelec (otch) VALUES (@otch)", Connect);

Sqlcmd.Parameters.AddWithValue("@otch", textBox8.Text);

}

}

}

Form 3

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace kursachlesko

{

public partial class Form3 : Form

{

string ConnectStr = @"Data Source=WIN-U8C7MPAU391;Initial Catalog = test123; Integrated Security = True;

user=Admin; database=test123; password=1234321123321;";

SqlConnection Connect = null;

public string ConnectionString { get; private set; }

 

public Form3()

{

InitializeComponent();

}

public void DoSql(string sql_query)

{

try

{

SqlConnection conn = new SqlConnection(ConnectStr);

conn.Open();

SqlDataAdapter sda = new SqlDataAdapter(sql_query, conn);

DataTable dt = new DataTable();

SqlCommand comm = new SqlCommand();

sda.Fill(dt);

 

}

catch

{

MessageBox.Show(@"Error");

}

}

 

private void button2_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO katalog (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox1.Text);

 

}

 

private void button1_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO katalog (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox1.Text);

}

 

private void button3_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO katalog (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox1.Text);

}

 

private void button6_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO katalog (raspologenie) VALUES (@raspologenie)", Connect);

Sqlcmd.Parameters.AddWithValue("@raspologenie", textBox2.Text);

}

 

private void button5_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO katalog (raspologenie) VALUES (@raspologenie)", Connect);

Sqlcmd.Parameters.AddWithValue("@raspologenie", textBox2.Text);

}

 

private void button4_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO katalog (raspologenie) VALUES (@raspologenie)", Connect);

Sqlcmd.Parameters.AddWithValue("@raspologenie", textBox2.Text);

}

 

private void button9_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO soderganie (dir) VALUES (@dir)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox3.Text);

}

 

private void button8_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO soderganie (dir) VALUES (@dir)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox3.Text);

}

 

private void button7_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO soderganie (dir) VALUES (@dir)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox3.Text);

}

 

private void button12_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO soderganie (file) VALUES (@file)", Connect);

Sqlcmd.Parameters.AddWithValue("@file", textBox4.Text);

}

 

private void button11_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO soderganie (file) VALUES (@file)", Connect);

Sqlcmd.Parameters.AddWithValue("@dir", textBox4.Text);

}

 

private void button10_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO soderganie (file) VALUES (@file)", Connect);

Sqlcmd.Parameters.AddWithValue("@file", textBox4.Text);

}

 

 

private void button15_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO tip (tip) VALUES (@tip)", Connect);

Sqlcmd.Parameters.AddWithValue("@tip", textBox5.Text);

}

 

private void button14_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO tip (tip) VALUES (@tip)", Connect);

Sqlcmd.Parameters.AddWithValue("@tip", textBox5.Text);

}

 

private void button13_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO tip (tip) VALUES (@tip)", Connect);

Sqlcmd.Parameters.AddWithValue("@tip", textBox5.Text);

}

 

private void button18_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO vladelec (fam) VALUES (@fam)", Connect);

Sqlcmd.Parameters.AddWithValue("@fam", textBox6.Text);

}

 

private void button17_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO vladelec (fam) VALUES (@fam)", Connect);

Sqlcmd.Parameters.AddWithValue("@fam", textBox6.Text);

}

 

private void button16_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO vladelec (fam) VALUES (@fam)", Connect);

Sqlcmd.Parameters.AddWithValue("@fam", textBox6.Text);

}

 

private void button21_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO vladelec (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox7.Text);

}

 

private void button20_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO vladelec (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox7.Text);

}

 

private void button19_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO vladelec (name) VALUES (@name)", Connect);

Sqlcmd.Parameters.AddWithValue("@name", textBox7.Text);

}

 

private void button24_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("INSERT INTO vladelec (otch) VALUES (@otch)", Connect);

Sqlcmd.Parameters.AddWithValue("@otch", textBox8.Text);

}

 

private void button23_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("UPDATE INTO vladelec (otch) VALUES (@otch)", Connect);

Sqlcmd.Parameters.AddWithValue("@otch", textBox8.Text);

}

 

private void button22_Click(object sender, EventArgs e)

{

var Sqlcmd = new SqlCommand("DELETE INTO vladelec (otch) VALUES (@otch)", Connect);

Sqlcmd.Parameters.AddWithValue("@otch", textBox8.Text);

}

}

}

ДЕМОНСТРАЦИЯ РАБОТЫ ПРИЛОЖЕНИЯ