Затем в этот созданный объект записываются параметры запроса и происходит его
выполнение.
Далее в цикле проходят по строкам, а в каждой строке проходят по ячейкам (столбцам),
и записывают выходные значения в массив.
После закрывают подключение к БД.
Текст функции sqlquery представлен в приложении А. Видно, что для возврата
результата запроса модулям используется динамический список списков строк
(List<List<string>> sqlresult). Это эффективный и удобный способ передать обратно в
программу таблицу, которую вернет запрос SELECT. Для запросов, которые не должны
возвращать значений, эта структура просто не заполняется. Таким образом, мы
определили единственную в программе точку доступа к БД, и все модули будут
взаимодействовать с БД именно через эту функцию.
Отметим еще немаловажную особенность разработанного ПО. Поскольку работа с БД
постоянно подразумевает отображение результатов в таблицах, то также были
спроектированы стандартизированные функции, которые позволяют привязать таблицу
БД к таблице на форме оконного интерфейса приложения.
Приведем пример вызова такой функции (приложение А):
Здесь функция выводит информацию по работникам компании на основании
должностей и штатного расписания, таким образом, комбинируя таблицы и получая
единую выборку с интересующими нас данными. Функция showSQLinGridView позволяет
не только подключить результат запроса к таблице, но еще и обеспечит переименование
заголовка таблицы под интересующий нас шаблон, а также функция может скрыть
определенные столбцы в таблице (например, поле ID).
Таким образом, не нужно каждый раз писать много кода по связке таблицы с базой
данных, достаточно лишь вызвать стандартизированную функцию showSQLinGridView().
В нашей программе присутствует большое число справочников. Программировать
каждый справочник и его интерфейс очень тяжело, поэтому было принято решение о
стандартизации отображении справочника в системе. Любой документ, повывший в
раздел «Справочники», должен обладать такими полями:ID, Code, Value, Info.
Это позволит автоматически генерировать окна и интерфейсы всех справочников один
небольшим «куском» кода.
Например, так инициализированы справочники в системе (приложение А):
Это хэш, ключами которого являются имена таблиц в БД, а значениями являются имена
таблиц в пользовательском интерфейсе WindowsForms.
Для хранения ссылок на справочники применяется объект ToolStripMenu, который
позволяет автоматически генерировать пункты меню программы (приложение А).
Поэтому, обходя кэш, генерируем пункты меню:
В результате, каждый справочник вызывается одной лишь функцией (приложение А):
Тэг хранит имя таблицы БД, а текст – имя таблицы для пользователя.