Пример программы демонстрации основных операций над данными таблицы базы данных MS SQL Server (SQLEXPRESS)
Содержание
- Условие задачи
- Выполнение
- 1. Создать новый проект в MS Visual Studio как Windows Forms Application.
- 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. Создать новый проект в MS Visual Studio как Windows Forms Application.
Создать новый проект типа Windows Forms Application. Пример создания нового проекта подробно описывается здесь.
⇑
2. Создание нового представления (view) для отображения данных таблицы Student.
Чтобы отображать данные таблиц базы данных, можно использовать разные способы. Один из них – это создание представлений (views), которые формируются средствами MS Visual Studio.
В нашем случае данные таблиц будут отображаться на форме в элементе управления типа DataGridView. После создания представлений, очень удобно их связать с элементами DataGridView.
Для создания представления, нужно вызвать команду «Add New View» из контекстного меню, которое вызывается кликом правой кнопкой мышки на элементе «Views» базы данных Education.dbo (рисунок 2).
Рис. 2. Вызов команды добавления нового представления
В результате откроется окно «Add Table» (рисунок 3). В окне нужно выбрать таблицы, которые добавляются к представлению.
Рис. 3. Выбор таблиц, на которых будет базироваться новое представление
В нашем случае выбираем таблицу Student и подтверждаем свой выбор кликом на кнопке Add. Следующим шагом нужно закрыть окно выбором кнопки Close.
После выполненных действий будет сформировано окно, в котором нужно выбрать поля, которые должны отображаться в представлении (на форме). Выбираем все поля (рисунок 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 добавляем три кнопки (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 2010
- Перевод базы данных Microsoft Access в формат Microsoft SQL Server
- C# (курсовая). Разработка приложения автоматизации диспетчера касс автовокзала