Создание интерфейса приложения
Сделаем нашу форму активной, просто щелкнув по ней левой клавишей мыши. В окне «свойства» изменим поле «Text». Теперь форма будет иметь название «LocalDBExample» вместо «Form1».
С панели элементов перетащим элемент «TabControl» на форму. Если панель еще не открыта, то нужно выбрать ее из вкладки «Вид».
Изменим значение свойства «Dock» табконтрола на значение «Fill», чтобы растянуть элемент на весь экран. Чтобы добавить вкладки в табконтрол, выберем свойство «TapPages» и нажмем на кнопку «…». Откроется окно «Редактор коллекции TabPage».
Добавим еще две вкладки, кнопкой «Добавить». Теперь в свойствах каждой вкладки нужно присвоить название. Для этого выберем свойство «Text» для tabPage1, и введем название «SELECT». Остальные вкладки назовем «INSERT», «UPDATE» и «DELETE» соответственно. В результате, табконтрол должен выглядеть так:
На вкладку «SELECT» поместим элемент ListBox и установим его параметру «Dock» значение «Fill».
Перейдем на вкладку «INSERT». Добавим следующие элементы управления: Два элемента Label, два элемента TextBox, и один Button. Label – это простой элемент для вывода текста. TextBox предназначен для ввода, а Button – это стандартная кнопка, по нажатию, на которую, будет происходить добавление данных в базу. В элементы Label поместим текст «Имя продукта» и «Цена». Кнопку назовем «Добавить». Для того чтобы изменить текст внутри элемента, необходимо изменить его свойство «Text». Расположим элементы следующим образом:
Аналогично оформим вкладку «UPDATE» следующим образом:
И вкладку «DELETE»:
Создание базы данных
LocalDB – это компонент системы управления базами данных MS SQL Server, созданный непосредственно для разработчиков. При добавлении localDB в проект Visual Studio, в том случае, если необходимые компоненты не будут установлены, Visual Studio сама предложит установить эти компоненты прямо по ходу работы.
Чтобы добавить базу данных в проект, в обозревателе решений нужно правой кнопкой мыши щелкнуть по названию проекта (LocalDBExample). Далее из выпадающего меню нужно выбрать «Добавить» и затем «Создать элемент».
Откроется окно, где нужно выбрать элемент «База данных, основанная на службах», и присвоить ему имя. Назовем базу данных «ExampleData» и нажмем «Добавить».
Видим, что в обозревателе решений появились файлы «ExampleData.mdf» и «ExampleData_log.ldf».
Выполняем двойной щелчок по «ExampleData.mdf» и в обозревателе серверов видим нашу базу данных.
Чтобы создать в базе данных новую таблицу, в обозревателе решений в каталоге базы данных ExampleData.mdf нажмем правой кнопкой на папку «Таблицы». Затем нажмем «Добавить новую таблицу». В результате откроется конструктор новой таблицы.
Таким образом, в конструкторе открылись две вкладки: «Проектирование» и «T-SQL». T-SQL – это структурированный язык запросов, с помощью которого происходит управление базами данных. Он незначительно, но все же отличается от стандартного языка SQL.
На вкладке «T-SQL» в строке «CREATE TABLE [dbo].[Table]» изменим название таблицы следующим образом: «CREATE TABLE [dbo].[Products]».
По умолчанию в таблице предложено создать поле «Id», добавим еще два поля: «Name» и «Price», куда будут добавляться наименования продуктов и цена на них.
Выберем в проектировании таблицы поле «Id», теперь в окне свойств выберем «спецификация идентификтора» и в параметр «(Идентификатор)» установим значение «True». Теперь при добавлении данных, не нужно указывать id, он автоматически будет увеличиваться на единицу. Мы видим что на вкладке T-SQL к полю Id добавился параметр «IDENTITY».
Добавим на вкладке проектирования поле Name, и установим тип данных nvarchar(50). Это означает, что значением в этом поле будет строка с максимально допустимым количеством символов в ней – 50. Теперь добавим поле Price, и установим такой же тип данных.
На вкладке проектирования нажмем кнопку «Обновить». Откроется следующее окно:
Нажмем «Обновить базу данных». Теперь, чтобы увидеть нашу таблицу в обозревателе серверов, нужно правой кнопкой нажать на папку «Таблицы» и затем нажать «Обновить».
Выполним щелчок правой клавишей по таблице Products и выберем «Показать таблицу данных».
Заполним таблицу данными. Возьмем к примеру товары из продуктового магазина: кофе, яблоко, печенье, колбаса, жвачка, конфеты. Укажем им цену: 300, 30, 100, 400, 20, 250 соответственно. Поле Id заполнять не нужно! Чтобы изменения сохранились, нужно нажать на кнопку «Сохранить все».
Подключение к базе данных
Выделим нашу главную форму (LocalDBExample), щелкнув по ней ЛКМ. Теперь в окне свойств формы нажмем на значок в виде молнии, для того, чтобы открыть список событий, с которыми форма может взаимодействовать. Далее выберем метод «Load» и выполним в двойной щелчок мышкой по этой строке.
В результате, Visual Studio создаст метод Form1.Load(), который будет выполнять действия при загрузке формы.
Добавим необходимые библиотеки для работы с базами данных:
- using System.Data;
- using System.Data.SqlClient;
Для работы с базой данных, необходимо к ней подключиться через строку подключения. Создадим глобальную переменную «SqlConnection sqlConnection».
Теперь необходимо получить строку подключения из свойств базы данных и присвоить ее переменной connectionString. В обозревателе сервером нужно выделить базу данных ExampleData одинарным щелчком. Затем в окне свойств найти параметр «Строка подключения», скопировать его содержимое и в методе Form1_Load инициализировать переменную connectionString. Так как строка подключения содержит в себе символы «» (кавычки) и \ (слеш), нужно перед каждым таким символом поставить знак \ (слеш). В результате, строка подключения выглядит следующим образом:
Теперь напишем обработчик исключений:
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(),ex.Source.ToString(), MessageBoxButtons.OK);
}
finally
{
}
Код, который последует далее, необходимо писать в теле этого обработчика (try).
Создадим подключение и откроем его следующим образом:
sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
Чтение данных
Для чтения данных из базы, необходим объект SqlReader. Объявим его глобально:
SqlDataReader sqlReader = null;
Теперь создадим команду, в которую укажем запрос к базе данных:
SqlCommand command = new SqlCommand("SELECT * FROM [Products]", sqlConnection);
Объявим sqlReader:
sqlReader = command.ExecuteReader();
И далее, с помощью цикла while, sqlReader “пробежит” по таблице продуктов. Необходимо вывести данные в listBox с вкладки SELECT. Удобно и быстро это сделать через пробелы:
while (sqlReader.Read())
{
listBox1.Items.Add(Convert.ToString(sqlReader["Id"]) + " " +
Convert.ToString(sqlReader["Name"]) + " " +
Convert.ToString(sqlReader["Price"])
);
}
В блоке finally обработчика исключений закроем sqlReader:
if (sqlReader != null)
sqlReader.Close();
Закрытие базы данных
После выполнения программы будет правильным закрыть соединение с базой данных, поэтому пропишем обработчик события FormClosing для формы.
Также, как и для «OnLoad», находим в списке обработчиков FormClosing, и выполняем двойной щелчок. В коде обработчика закроем соединение с базой данных:
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
sqlConnection.Close();
В результате, метод выглядит так:
Запустим программу и увидим результат: