Сущности
Для начала выделим классы сущности. Напоминаем, классы сущности – абстракции, осуществляющие хранение информации об объектах реального мира. В тексте их можно узнать, как существительные, с которыми в программе много всего происходит. Для нашего задания это:
- Сотрудники (заключают договоры займа)
- Контрагенты(Предоставляют займы)
- Договора займов(хранят информацию об условиях займа)
- Список статей доходов, расходов(хранят информацию о статьях доходов и расходов)
- Журнал проводок(хранит информацию о бухгалтерских операциях системы)
- План счетов(Хранит информацию о бухгалтерских счетах)
Специфика программ работы с БД заключается в том, что классов сущностей как таковых в программе нет. Они все в БД и выделять их нужно для того, чтобы сформировать структуру ее таблиц.
Управляющие классы
Основное назначение управляющих классов – манипуляция с сущностями и осуществление основных функций системы. Как правило, в основном управляющие классы содержат только методы, выполняющие функции системы. Соответственно, для небольших систем(такой как наша), будет достаточно одного управляющего класса. Определим его методы. Их можно разделить на четыре группы.
Сервисные обязательные методы:
- Установление связи с базой данных
Сервисные необязательные методы(для удобства):
- Формирование структуры таблиц БД при первичной установке системы
- Функция заполнения таблиц первичными(тестовыми данными)
- Функция очистки таблиц БД
- Функция уничтожения таблиц БД
Сервисные специфические методы:
- Установление текущего периода
- Создание архива БД
Методы «по заданию»:
- Изменение информации о конкретном объекте-сущности
|
- Фиксация операции заключения договора
- Фиксация поступления денежных средств
- Закрытие договора
- Возврат займа
Visual Studio предоставляет очень много удобных визуальных компонентов для работы с БД, поэтому в данном случае большинство функций управляющего класса будут работать с компонентами формы.
Установка связи с БД. Есть два варианта реализации: открытие соединения или просто формирование строки подключения. Первый вариант рекомендуется для приложений, которые почти постоянно общаются с БД, не производя с ее информацией длительных расчетов. Тогда соединение с БД рекомендуется открывать только один раз. Если же в ваших приложениях к БД вы обращаетесь редко, то сам коннект к БД рекомендуется осуществлять непосредственно перед выполнением запроса, так как длительно открытое соединение может в будущем создать проблемы: допустим, вы соединились с БД, выдернули оттуда данные и начали их обрабатывать. Эта процедура может занять длительное время и сервер отключит ваше соединение по таймауту неиспользования, затем, когда вы захотите еще раз выдернуть данные из БД, вам все равно придется создавать подключение заново.
Выполнение данной функции состоит из двух этапов: первый этап подготовительный. Состоит в создании самой БД. Откройте Visual Studio. Перейдите в окно Server Explorer(через View). Найдите DataConnection и, нажав правую кнопку мыши, выберите Add connection. В открывшемся окне в разделе Data source нажмите Change и выберите Microsoft Sql Server Database File. В поле Database file name введите полный путь к тому месту, где на вашем компьютере необходимо создать файл БД. Например, чтобы на диске D создать файл с именем MyDB.mdf пишем: D:\MyDB.mdf. Нажимаем ОК. Вам скажут, что такого файла нет, и спросят, хотите ли вы его создать. Нажимаем «Да». Теперь в окне Server Explorer под Data Connection появился новый элемент – имя вашего файла. Правой кнопкой нажимаем на этом соединении и ищем его свойства(Properties). Далее в свойствах ищем ConnectionString. Выделяем, копируем текст этого свойства и временно вставляем его в какой-нибудь текстовый файл, он нам понадобится позже. Строка это будет иметь вид примерно следующий:
|
Data Source=.\SQLEXPRESS;AttachDbFilename=D:\MyDB.mdf; Integrated Security=True;Connect Timeout=30;User Instance=True
Теперь мы готовы к тому, чтобы начать писать саму программу. Написание программы
Создаем новее приложение WindowsForms. Для начала мы создадим все таблицы БД, управляющий класс, а только потом перейдем к интерфейсу. Начнем с управляющего. Итак, добавляем в программу класс и начинаем его описывать. Во-первых, для работы с БД нам понадобится прописать:
using System.Data.SqlClient;
Так как ему необходимо подключаться к БД и хранить настройки этого подключения, то ему нужно строковое поле:
Class UpravClass
{
string connectionString = "";
}
Далее, этот класс должен предоставлять пользователю выбор пути к файлу БД, соответственно, он должен менять это поле. Для этого определим свойство:
Class UpravClass
{
string connectionString = "";
Public string ConsStr
{
get { return connectionString; }
set { connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + value + ";Integrated Security=True;Connect Timeout=30;User Instance=True"; }
}
}
В методе set этого свойства мы разбиваем полученную ранее строку подключения, заменяя имя файла ключевым словом value. Теперь пользователю нужно будет только выбрать имя файла, а строка подключения сформируется сама. Теперь определим конструктор для создания объекта этого класса. Ему передадим путь к файлу БД и установим значение этого поля.
|
Class UpravClass
{
string connectionString = "";
Public string ConsStr
{
get { return connectionString; }
set { connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + value + ";Integrated Security=True;Connect Timeout=30;User Instance=True"; }
}
public UpravClass(string dbpath)
{
ConsStr = dbpath;
}
}
Существует два варианта работы с БД. Первый через визуальные компоненты Visual Studio, второй через чисто программный код. Мы частично рассмотрим оба метода.
При выполнении различных управляющих функций в БД(создание, очистка, уничтожение таблиц, вставка) мы будем выполнять всегда следующие действия:
- Открывать соединение с БД,
- Выполнять команду
- Возвращать сообщение об успешном выполнении команды или ошибке.
Соответственно, у нашего управляющего класса можно определить метод: