Приклад програми демонстрації основних операцій над даними таблиці бази даних MS SQL Server (SQLEXPRESS)
Зміст
- Умова задачі
- Виконання
- 1. Створення проекту типу Windows Forms Application в MS Visual Studio.
- 2. Створення нового представлення (view) для відображення даних таблиці Student.
- 3. Розміщення елементу управління DataGridView та налаштування зв’язку з базою даних.
- 4. Налаштування вигляду елементу управління типу DataGridView.
- 5. Рядок Connection String.
- 6. Створення нової форми для демонстрації команд оперування даними.
- 7. Додавання кнопок виклику команд оперування даними таблиці Student.
- 8. Програмування події кліку на кнопці “Insert…“.
- 9. Програмування події кліку на кнопці “Edit…“.
- 10. Програмування події кліку на кнопці “Delete“.
- Зв’язані теми
Пошук на інших ресурсах:
Умова задачі
Розробити додаток, який демонструє основні операції над даними в базі даних типу MS SQL Server, а саме:
- підключення бази даних до додатку;
- відображення таблиць бази даних на формі;
- додавання нового запису базу даних;
- редагування запису;
- видалення запису.
За основу взята база даних Education.dbo, процес створення якої детально описаний тут.
На рисунку 1 відображено структуру бази даних Education.dbo. Як видно з рисунку, база даних має ім’я:
sasha-pc\sqlexpress.Education.dbo
Тут “sasha-pc” – ідентифікатор комп’ютера в мережі, “sqlexpress” – назва сервера баз даних, “Education.dbo” – назва бази даних.
Рис. 1. База даних Education.dbo
База даних містить дві таблиці: Student та Session. Структура таблиць наступна.
Таблиця Student
Таблиця Session
⇑
Виконання
1. Створення проекту типу Windows Forms Application в MS Visual Studio.
Створити новий проект типу Windows Forms Application. Приклад створення нового проекту детально описується тут.
⇑
2. Створення нового представлення (view) для відображення даних таблиці Student.
Щоб відображати дані таблиць бази даних, можна використовувати різні способи. Один з них – це створення представлень (views), які формуються засобами MS Visual Studio.
У нашому випадку дані таблиць будуть відображатись на формі в елементі управління типу DataGridView. Після побудови представлень, дуже зручно їх зв’язати з елементами DataGridView.
Для створення представлення, потрібно викликати команду “Add New View” з контекстного меню, що викликається при кліку на елементі “Views” бази даних Education.dbo (рисунок 2).
Рис. 2. Виклик команди додавання нового представлення
У результаті відкриється вікно “Add Table” (рисунок 3). У вікні потрібно вибрати таблиці, що додаються у представлення.
У нашому випадку вибираємо таблицю Student і підтверджуємо свій вибір кліком на кнопці Add. Наступним кроком потрібно закрити вікно вибором кнопки Close.
Рис. 3. Вибір таблиць, на основі яких буде базуватись нове представлення
Після виконаних дій буде сформовано відображення, у якому потрібно вибрати поля, які мають відображатись на формі. Вибираємо усі поля (рисунок 4).
При виборі полів, у верхній частині робочої області відображаються поля таблиці Student. З допомогою “мишки” можна вибирати потрібні поля для представлення.
Відповідно, в середній області вікна відображаються назви вибраних полів, таблиця в якій вони є (див. рис. 4), можливість сортування, фільтрування та інше.
У нижній частині області відображається відповідний текст SQL-запиту, що використовується для представлення.
Рис. 4. Вибір полів таблиці Student для їх представлення
Після вибору команди
File->Save All
або
File->Save View1
відкриється вікно, в якому потрібно задати ім’я представлення. Задаємо ім’я “View Student” (рисунок 5.
Рис. 5. Задавання імені для представлення
Після виконаних дій, вікно представлення матиме вигляд як показано на рисунку 6.
Рис. 6. Представлення View Student у базі даних
Тепер можна розміщувати елемент управління DataGridView та з’язувати його з представленням.
⇑
3. Розміщення елементу управління DataGridView та налаштування зв’язку з базою даних.
Перед розміщенням елементу управління DataGridView потрібно перейти в режим проектування форми “Form1.cs [Design]“.
Елемент DataGridView представляє собою таблицю, що має відображати дані. Даний елемент управління розміщується в панелі ToolBox. Спочатку дещо корегуємо розміри форми, а потім розміщуємо на ній елемент управління DataGridView (рисунок 7). У результаті буде створено екземпляр об’єкту з іменем dataGridView1 за замовчуванням.
Рис. 7. Елемент управління DataGridView та вікно вибору джерела даних
Після розміщення елементу управління типу DataGridView на формі у правому верхньому куті можна вибрати налаштування джерела даних. Відповідно відкриється вікно “DataGridView Tasks“. У цьому вікні потрібно вибрати спадне меню “Choose Data Source“.
У меню, що відкриється вибирається команда “Add Project Data Source…” (рис. 7). Після цього відкривається вікно майстра, в якому послідовно вибирається джерело даних.
На рисунку 8 показано вікно “Data Source Configuration Wizard“, в якому вибирається тип джерела даних. У нашому випадку встановлюємо “Database“.
Рис. 8. Вибір типу джерела даних
У наступному вікні (рисунок 9) вибирається модель джерела даних. Потрібно вибрати DataSet.
Рис. 9. Вибір моделі джерела даних
У вікні, зображеному на рисунку 10, потрібно задати з’єднання даних, яке потрібно використати для підключення до бази даних. У нашому випадку потрібно вибрати базу даних “sasha–pc\sqlexpress\Education.dbo“.
Рис. 10. Вибір з’єднання даних
У наступному вікні (рисунок 11) пропонується зберегти рядок з’єднання Connection String в конфігураційний файл додатку. Залишаємо все як є і переходимо до наступного вікна.
Рис. 11. Пропозиція збереження рядка з’єднання з базою даних Connection String в конфігураційному файлі додатку
Після побудови з’єднання з базою даних висвічується множина об’єктів бази даних (рисунок 12). У нашому випадку потрібно вибрати представлення “View Student” і всі поля з нього. Відмічені поля будуть відображатися в компоненті типу DataGridView.
Рис. 12. Вибір об’єктів бази даних, які потрібно відображати в DataGridView
Після вибору кнопки Finish буде відображено вибрані об’єкти (представлення View Student) бази даних Education.dbo (рисунок 13).
Рис. 13. Елемент управління типу DataGridView з вибраними полями представлення View Student
Подібним чином можна налаштовувати представлення, що містять будь-які поля з будь-яких таблиць бази даних. Також в одному представленні можуть відображатись поля з різних таблиць.
⇑
4. Налаштування вигляду елементу управління типу DataGridView.
Якщо запустити додаток на виконання, то буде отримано дані представлення View Student, яке відповідає таблиці Student бази даних (рисунок 14).
Рис. 14. Завантаження додатку на виконання
Як видно з рисунку 14, дані в таблиці dataGridView1 відображаються добре, але оформлення можна скорегувати.
Елемент управління типу DataGridView допускає коригування вигляду полів, що відображаються.
Для виклику команд редагування полів, достатньо викликати контекстне меню кліком правою кнопкою мишки на елементі управління dataGridView1.
У меню є різні корисні команди, що дозволяють управляти виглядом та роботою DataGridView:
- команда блокування елементу управління (Lock Controls);
- команда редагування полів, що відображаються у представленні (Edit Columns…);
- команда додавання нових полів, наприклад розрахункових (Add Column).
У нашому випадку потрібно вибрати команду “Edit Columns…” (рисунок 15).
Рис. 15. Виклик команди “Edit Columns…” з контекстного меню
У результаті відкриється вікно “Edit Columns“, в якому можна налаштувати вигляд полів представлення на власний смак (рисунок 16).
Рис. 16. Вікно налаштування вигляду полів у представленні “View Student“
У вікні на рисунку 16 для кожного поля можна налаштовувати назву, вирівнювання, ширину, можливість редагування даних тощо.
⇑
5. Рядок Connection String.
Для того, щоб в базу даних вносити зміни, потрібно отримати рядок з’єднання з базою даних Connection String.
Є різні способи отримання рядка з’єднання з базою даних. Один з них базується на читанні цього рядка у вікні Properties бази даних Education.dbo (рис. 17).
Рис. 17. Визначення рядка Connection String
Для збереження рядка в програмі вводиться внутрішня змінна типу string. З допомогою буферу обміну копіюємо рядок Connection String в описану змінну типу string.
У тексті файлу “Form1.cs” на початку опису класу Form1 треба описати змінну
string conn_string = @"Data Source=(local)\SQLEXPRESS;Initial Catalog=Education;Integrated Security=True;Pooling=False";
На даний момент текст класу Form1 наступний:
public partial class Form1 : Form { string conn_string = @"Data Source=(local)\SQLEXPRESS;Initial Catalog=Education;Integrated Security=True;Pooling=False"; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'educationDataSet.View_Student' table. You can move, or remove it, as needed. this.view_StudentTableAdapter.Fill(this.educationDataSet.View_Student); } }
⇑
6. Створення нової форми для демонстрації команд оперування даними.
Для того, щоб мати можливість обробляти дані поточного запису потрібно створити нову форму. Процес створення нової форми в MS Visual Studio – C# детально описується тут.
Форма додається командою:
Project -> Add Windows Form...
У вікні, що відкриється “New Item” потрібно вибрати елемент “Windows Form“.
Ім’я файлу нової форми залишаємо за замовчуванням “Form2.cs“.
На рисунку 18 зображено вигляд нової форми.
Розміщуємо на формі елементи управління наступних типів:
- два елементи управління типу Button (кнопки OK та Cancel). Відповідно буде отримано два об’єкти з іменами button1 та button2;
- чотири елементи управління типу Label для створення інформаційних повідомлень;
- чотири елементи управління типу TextBox для вводу даних в полях Num_book, Name, Group, Year.
Потрібно налаштувати такі властивості елементів управління:
- в елементі управління button1 властивість Text = “OK“;
- в елементі управління button2 властивість Text = “Cancel“;
- в елементі управління button1 властивість DialogResult = “OK“;
- в елементі управління button2 властивість DialogResult = “Cancel“;
- в елементі управління label1 властивість Text = “Num_book“;
- в елементі управління label2 властивість Text = “Name“;
- в елементі управління label3 властивість Text = “Group“;
- в елементі управління label4 властивість Text = “Year“.
Також налаштовуємо видимість елементів управління типу TextBox. Для цього у всіх елементах управління textBox1, textBox2, textBox3, textBox4 значення властивості Modifiers = “public“.
Рис. 18. Вигляд новоствореної форми
⇑
7. Додавання кнопок виклику команд оперування даними таблиці Student.
Для подальшої роботи потрібно з допомогою мишки переключитись на головну форму Form1.
На головну форму додатку Form1.cs додаємо три кнопки (Button). Автоматично буде створено три змінні–об’єкти з іменами button1, button2, button3. У кожній з цих кнопок вносимо такі налаштування (окно Properties):
- у кнопці button1 властивість Text = “Insert …” (вставка запису);
- у кнопці button2 властивість Text = “Edit …” (змінити запис);
- у кнопці button3 властивість Text = “Delete“.
У результаті внесених змін основна форма буде мати приблизний вигляд як зображено на рисунку 19.
Рис. 19. Основна форма додатку
⇑
8. Програмування події кліку на кнопці “Insert…“.
Обробник події кліку на кнопці “Insert…” має вигляд:
private void button1_Click_1(object sender, EventArgs e) { string cmd_text; Form2 f2 = new Form2(); if (f2.ShowDialog() == DialogResult.OK) { cmd_text = "INSERT INTO Student VALUES (" + "'" + f2.textBox1.Text + "' , '" + f2.textBox2.Text + "' , '" + f2.textBox3.Text + "' , " + f2.textBox4.Text + ")"; // создать соединение с базой данных SqlConnection sql_conn = new SqlConnection(conn_string); // создать команду на языке SQL SqlCommand sql_comm = new SqlCommand(cmd_text, sql_conn); sql_conn.Open(); // открыть соединение sql_comm.ExecuteNonQuery(); // выполнить команду на языке SQL sql_conn.Close(); // закрыть соединение this.view_StudentTableAdapter.Fill(this.educationDataSet.View_Student); } }
Спочатку викликається форма Form2. Після отримання результату “OK” (натиск відповідної кнопки), у формі Form2 заповнені поля в елементах типу TextBox включаються в рядок SQL-запиту. SQL-запит додавання нового рядка має вигляд:
INSERT INTO Student VALUES (value1, value2, value3, value4)
де value1 відповідає номеру залікової книжки; value2 – прізвище студента; value3 – група, в якій навчається студент; value4 – рік вступу.
Рядок з’єднання з базою даних Connection String записаний в змінній conn_string (див. п. 5). Об’єкт класу SqlConnection здійснює з’єднання додатку з джерелами даних. Крім того, клас Connection вирішує задачі аутентифікації користувачів, роботу з мережами, ідентифікацію баз даних, буферизацію з’єднань і обробку транзакцій.
Команда на мові SQL, що додає запис до таблиці, інкапсульована в класі SqlCommand. Конструктор класу SqlCommand приймає два параметри: рядок запиту на мові SQL (змінна cmd_text) та об’єкт класу SqlConnection.
Метод ExecuteNonQuery() реалізований в інтерфейсі IDBCommand. Метод реалізує SQL-команди, які не повертають дані. До таких команд відносяться команди INSERT, DELETE, UPDATE а також збережені процедури, що не повертають даних. Метод ExecuteNonQuery() повертає кількість задіяних ним записів.
⇑
9. Програмування події кліку на кнопці “Edit…“.
Обробник події кліку на кнопці “Edit…” має вигляд:
private void button2_Click(object sender, EventArgs e) { string cmd_text; Form2 f2 = new Form2(); int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1[0, index].Value); f2.textBox1.Text = num_book; f2.textBox2.Text = Convert.ToString(dataGridView1[1, index].Value); f2.textBox3.Text = Convert.ToString(dataGridView1[2, index].Value); f2.textBox4.Text = Convert.ToString(dataGridView1[3, index].Value); if (f2.ShowDialog() == DialogResult.OK) { cmd_text = "UPDATE Student SET Num_book = '" + f2.textBox1.Text + "', " + "[Name] = '" + f2.textBox2.Text + "', " + "[Group] = '" + f2.textBox3.Text + "', " + "Year = " + f2.textBox4.Text + "WHERE Num_book = '" + num_book + "'"; SqlConnection sql_conn = new SqlConnection(conn_string); SqlCommand sql_comm = new SqlCommand(cmd_text, sql_conn); sql_conn.Open(); sql_comm.ExecuteNonQuery(); sql_conn.Close(); this.view_StudentTableAdapter.Fill(this.educationDataSet.View_Student); } }
У цьому обробнику виконується SQL-команда UPDATE, що змінює поточне значення активного запису.
⇑
10. Програмування події кліку на кнопці “Delete“.
Обробник події кліку на кнопці “Delete” має вигляд:
private void button3_Click(object sender, EventArgs e) { string cmd_text = "DELETE FROM Student"; int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1[0,index].Value); cmd_text = "DELETE FROM Student WHERE [Student].[Num_book] = '" + num_book + "'"; SqlConnection sql_conn = new SqlConnection(conn_string); SqlCommand sql_comm = new SqlCommand(cmd_text, sql_conn); sql_conn.Open(); sql_comm.ExecuteNonQuery(); sql_conn.Close(); this.view_StudentTableAdapter.Fill(this.educationDataSet.View_Student); }
У цьому обробнику виконується SQL-команда видалення запису DELETE.
⇑
Зв’язані теми
- Як вивести таблицю бази даних Microsoft Access в компонент DataGridView.
- Підключення бази даних Microsoft Access в MS Visual Studio.
- Перевід бази даних Microsoft Access у формат MS SQL Server.
- C# (Курсова робота). Розробка програми автоматизації роботи диспетчера автовокзалу.