Для начала работы обязательно нужно будет изучить материал, который дадут на экзамене и на фоне этого создать БД в соответствии с указанными данными. Первый пункт – это работа с SQL. Для того чтобы зайти в него нужно указать имя сервера, скорее всего оно будет у каждого индивидуальное, его нужно будет вписать сюда: 1) Для начала нужно создать таблицы для примера возьмем тему работы «Обувной магазин». Для этого мы заходим в SQL и создаем базу данных: 2) Правой кнопкой мыши нажимаем на данное окошко и выбираем создать базу данных: 3) Затем вписываем название нашей базы данных (ОНО НЕ ДОЛЖНО СОДЕРЖАТЬ В СЕБЕ ПРОБЕЛОВ, ДАЖЕ НСЛИ СОСТОИТ ИЗ НЕСКОЛЬКИХ СЛОВ). 4) После того, как БД создана нажимаем на нее правой кнопкой мыши и создаем наш первый запрос Для создания БД мы используем такой код: СКРИПТ ДЛЯ СОЗДАНИЯ ТАБЛИЦ: CREATE TABLE Klient ( Id_klienta INT NOT NULL PRIMARY KEY, surname NVARCHAR(50) NOT NULL, firstname NVARCHAR(50) NOT NULL, middlename NVARCHAR(50) NULL, telefon NVARCHAR(50) NULL, ); CREATE TABLE Sotrudnik ( Id_sotrudnika INT NOT NULL PRIMARY KEY, surname NVARCHAR(50) NOT NULL, firstname NVARCHAR(50) NOT NULL, middlename NVARCHAR(50) NULL, dolzhnost NVARCHAR(50) NULL, telefon NVARCHAR(50) NULL, pasport NVARCHAR(50) NULL ); CREATE TABLE Shoes ( Id_shoes INT NOT NULL PRIMARY KEY, nazvanie NVARCHAR(50) NOT NULL, prise FLOAT NOT NULL, material NVARCHAR(50) NOT NULL, Id_klienta INT NOT NULL, Id_sotrudnika INT NOT NULL, Quantity INT NOT NULL, Photo VARBINARY(MAX) ); РАЗБОР КОДА: CREATE TABLE Klient ( Id_klienta INT NOT NULL PRIMARY KEY, surname NVARCHAR(50) NOT NULL, firstname NVARCHAR(50) NOT NULL, middlename NVARCHAR(50) NULL, telefon NVARCHAR(50) NULL, ); CREATE TABLE – это ключевые слова для создания таблицы. Klient – это название нашей таблицы оно может быт любым. Далее идет название колонок таблицы (Id_klienta, surname, firstname, middlename, telefon). Затем для каждой колонки прописывается тип данных, которые будут там содержаться: Id_klienta INT NOT NULL PRIMARY KEY Опишу непосредственно одну из строчек: INT – это числовой тип данных (значит именно в этой колонке будут содержаться цифры). NOT NULL – это обозначение того, что поле не может быть пустым оно должно быть обязательно заполненным. PRIMARY KEY – это пишется только для главного ключа таблицы к первой строчке, где ID, больше нигде. ТИПОВ ДАННЫХ ОЧЕНЬ МНОГО, НО МЫ БУДЕМИСПОЛЬЗОВАТЬ ОСНОВНЫЕ: 1) NVARCHAR (50) – это текстовый тип данных, который используется непосредственно с текстом к примеру (Фамилия, Имя, Отчество). В скобках рядом с типом данных прописывается количество символов, которые пользователь может внести в строку. 2) INT – это числовой тип данных (значит именно в этой колонке будут содержаться цифры). ПРИМЕР: (Количество) каждый ID имеет только этот тип данных!!!!!!! 3) FLOAT — это тип данных, используемый в программировании для хранения чисел с плавающей запятой (то есть не целые числа пример: 12,5). ПРИМЕР: Сумма, скидка. 4) DATE – это тип данных, который используется для ДАТЫ. ПРИМЕР: datta DATE NOT NULL 5) VARBINARY(MAX) – используется такой тип данных для фото. После успешно выполненной команды, мы переходим к заполнению таблицы, лучше всего и проще для тебя внести эти данные вручную. После того, как мы создали и заполнили все наши таблицы, мы переходим к созданию связей между ними. Правой кнопкой мыши нажимаем и выбираем: Выделяем все нужные нам таблицы: И нажимаем добавить. Соединение таблиц между собой происходит, если есть «ВТОРОСТЕПЕННЫЙ КЛЮЧ», а если просто совпадают 2 поля: Связь осуществляется от второстепенной таблицы к главной ОТ СОТРУДНИКА К ОБУВИ ОТ КЛИЕНТА К ОБУВИ Подтверждаем, если таблицы первичного и внешнего ключа указаны верно и поля тоже должны быть одинаковые Затем, когда все создано мы переходим к работе с C# После того, как мы зашли нажимаем В поиске вводим Далее даем название нашему проекту: Далее открывается непосредственно место, где мы будем работать над нашим проектом: Затем изменим название формы с Form1 на Клиент: В свойствах меняем Form1 на Клиент Добавляем на форму: Далее нажимаем на стрелку в правом верхнем углу DataGridView Далее выбираем источник данных: После нажатия на стрелочку в правом верхнем углу, нажимаем на... «Выберите источник данных», а далее «Добавить источник данных проекта». Далее покажу алгоритм добавления источника данных: 1) База данных – Далее – Набор данных – Далее – Создать подключение – Имя сервера (тут указываем строчку из Sql (Заходим заново в SQL в самое начало и копируем оттуда строчку подключения «Имя сервера» и вставляем ее в ИМЯ СЕРВЕРА)) – Выбираем нужную нам БД – ОК – Далее – Далее – Ставим галочки около всех пунктов и нажимаем ГОТОВО. И из списка выбираем нужную нам базу данных. Сверяем данные Далее непосредственно подключение таблицы к DataGriedView Также нажимаем на стрелку в верхней части DataGriedView – Выберите источник данных – стрелочка – Другие источники данных – еще стрелочка – выбираем нужную нам таблицу Теперь в нашем DataGriedView отображается таблица. При желании можно убрать не нужные нам поля: Правка столбцов – далее выбираем не нужный нам столбец, который хотим скрыть и в Visible – False Теперь его не видно Теперь добавим Он нужен для того, чтобы добавлять, удалять данные без кода и особых усилий, но главное корректно его подключить для этого нажимаем на него и переходим в свойства BindingSource и выбираем нашу таблицу Теперь он подключен и работает корректно. Теперь добавим Label и TextBox – это нужно для того, чтобы полностью отображать поля таблицы см. скрины: Вот мы их добавили, только добавляем ровно столько их сколько столбцов в таблице, даже те, которые мы скрыли. У нас их всего 5. Теперь у каждого Label меняем название на человеческое (называем их по-русски в соответствии с названиями столбцов таблицы) Так же меняем в свойствах вкладка Текст: Теперь каждый TextBox нужно подключить к бд: Нажимаем на нужное нам поле Далее опять переходим в свойства и выбираем: И выбираем нужное нам поле и так с каждым TextBox. Теперь данные отображаются таким образом: Теперь переходим к основной работе программы: Будем осуществлять добавление кодом. Для этого нужно на форму добавить Кноку и дать ей соответствующее имя: имя дается в том же месте свойства – текст и даем ей имя ГОТОВО! Далее для того, чтобы осуществить добавление создаем новую форму: Нажимаем «Проект» - Добавить форму – даем ей название и нажимаем добавить Затем так же даем ей название по-русски имя дается в том же месте свойства – текст и даем ей имя. Копируем с главной формы И вставляем в новую, которую создали, а также добавляем туда 2 кнопки и даем им название, а также в свойствах указываем какие действия они будут выполнять Нажимаем на кнопку ДОБАВИТЬ и переходим в свойства И выбираем ей А кнопке ОТМЕНА Вот такая форма должна получится Теперь каждому В свойствах в Modifers ставим Public После того, как мы все это сделали, переходим в нашу основную форму и два раза нажимаем на кнопку ДОБАВЛЕНИЕ, затем нас перекидывает в код Для того, чтобы программа работала в каждой основной форме, мы должны прописывать одну строчку ЭТО ОБЯЗАТЕЛЬНО!!!!!!!! Теперь в button1 прописываем код добавления: DobKL f1 = new DobKL(); if (DialogResult.OK == f1.ShowDialog()) { conn = new SqlConnection(); conn.ConnectionString = Properties.Settings.Default.DemkaMaksimConnectionString; conn.Open(); SqlCommand myComm = conn.CreateCommand(); myComm.CommandText = "INSERT INTO Klient (Id_klienta, surname, firstname, middlename, telefon)" + "VALUES (@Id_klienta, @surname, @firstname, @middlename, @telefon)"; myComm.Parameters.Add("@Id_klienta", SqlDbType.Int).Value = Convert.ToInt32(f1.textBox1.Text); myComm.Parameters.Add("@surname", SqlDbType.NVarChar, 50).Value = (f1.textBox2.Text); myComm.Parameters.Add("@firstname", SqlDbType.NVarChar, 50).Value = (f1.textBox3.Text); myComm.Parameters.Add("@middlename", SqlDbType.NVarChar, 50).Value = (f1.textBox4.Text); myComm.Parameters.Add("@telefon", SqlDbType.NVarChar, 50).Value = (f1.textBox5.Text); myComm.ExecuteNonQuery(); conn.Close(); this.klientTableAdapter.Fill(this.demkaMaksimDataSet.Klient); } Название доп формы, где осуществляется добавление Поля добавления нужных нам данных Это текст боксы которые мы создали, указываешь именно тот ,который подходит под название полей. ЭТО УЧИТЬ!!!! УДАЛЕНИЕ: DialogResult result = MessageBox.Show("Вы уверены, что хоите удалить?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { int n = dataGridView1.CurrentCell.RowIndex; dataGridView1.Rows.RemoveAt(n); klientTableAdapter.Update(demkaMaksimDataSet); } ЭТО УЧИТЬ!!!! Везде в каждой форме пишется одно и тоже меняется только на название другой таблицы в соответствии с формой. ПОИСК: Для поиска добавляем отдельный текстбокс string n = textBox6.Text; conn = new SqlConnection(); conn.ConnectionString = Properties.Settings.Default.DemkaMaksimConnectionString; conn.Open(); SqlCommand myComm = conn.CreateCommand(); myComm.CommandText = $"SELECT * FROM Klient WHERE Id_klienta = {n}"; SqlDataReader myData = myComm.ExecuteReader(); BindingSource source = new BindingSource(); source.DataSource = myData; dataGridView1.DataSource = source; myData.Close(); conn.Close(); Это текст бокс в который будешь вносить данные для поиска Запрос на выборку данных определенных название таблицы откуда берем данные, а это какие именно УЧИТЬ!!!!!!!!!! СБРОС ПОИСКА Тоже создаешь отдельную кнопку и там пишешь это: dataGridView1.DataSource = klientBindingSource; Название таблицы СОРТИРОВКА: Для этого, как и всегда создаем отдельную кнопку и прописываем в ней код: klientBindingSource.Sort = "id_klienta DESC"; Пишется, он в одну строчку Таблица Что именно сортировать и как МЫ будем брать два основных ASC и DESC (По возрастанию и убыванию) СОХРАНЕНИЕ ДАННЫХ this.Validate(); klientBindingSource.EndEdit(); klientTableAdapter.Update(demkaMaksimDataSet); УЧИТЬ!!!!