УДК004.62; 004.738.52
УНИФИЦИРОВАННЫЙ ВЕБ-ДОСТУП К БАЗАМ ДАННЫХ А.Г. Юферов
UNIFIED WEB ACCESS TO DATABASES A.G. Yuferov
Аннотация. В статье описан унифицированный шаблон веб-страниц, реализующий с помощью стандартных компонентов операционной системы WINDOWS элементарные операции взаимодействия с произвольной базой данных: просмотр таблицы, редактирование / добавление записи, удаление записи.
Ключевые слова: база данных, веб-доступ, унификация.
Abstract. This article describes a unified template web pages, which implemented using standard components of the operating system WINDOWS for execution elementary operations of interaction with any database: a table scan, edit/add records, delete records.
Keywords: database, web access, unification.
В локальной сети предприятия работнику предоставляется регламентированный доступ к служебным базам данных (далее: БД), часть из которых он использует как справочные, доступные только для просмотра, а другие редактирует или заполняет согласно своим должностным обязанностям. В настоящее время доступ к таким базам данных наиболее просто реализовать через стандартный веб-браузер посредством персональных веб-страниц, создаваемых под конкретные должностные инструкции (см., например, [10]), без размещения на клиентских компьютерах каких-либо специализированных приложений. Персональная веб-страница обеспечивает регламентацию доступа путем обращения к сценариям-обработчикам параметров аутентификации и авторизации и содержит ссылки на страницы просмотра / редактирования (далее: СПР) конкретных таблиц БД, с которыми имеет дело работник. В свою очередь СПР адресуются к источнику данных (к БД), к таблице в этой БД, и, в случае редактирования, к конкретной записи в таблице. Более продвинутый режим работы, предоставляющий возможность формулировать на странице просмотра / редактирования произвольные запросы к БД, для большинства должностей, как показывает практика, не нужен.
Многообразие баз данных на управленческих сайтах предприятия, переменность их состава обусловливают целесообразность разработки унифицированных шаблонов СПР, исключающих необходимость создания специальных страниц доступа при появлении новых таблиц или новых должностных функций. Современные технологии взаимодействия с БД позволяют любые объекты БД трактовать как переменные, то есть передавать страницам доступа упомянутые выше реквизиты (строка подключения к источнику данных, имя таблицы, индекс записи в таблице) как параметры. Располагая этими параметрами, можно основные элементарные операции взаимодействия с БД:
- просмотр таблицы;
- редактирование / добавление записи;
- удаление записи (записей);
- реализовать посредством стандартных веб-страниц, работающих без переделки с любыми СУБД и таблицами любой структуры.
Многочисленные публикации, посвященные вопросам взаимодействия с базами данных из различных программных сред, приводят содержательные примеры доступа к данным через веб [3-8]. Однако большинство таких примеров оперирует таблицами конкретной структуры, так что требуется достаточно кропотливая модификация предлагаемых решений для реализации унифицированного доступа, не требующего знания структуры таблицы и имен полей. В данной работе описан результат подобной модификации - шаблон из четырех веб-страниц, реализующий элементарные операции взаимодействия с БД, упомянутые выше.
В качестве прототипов использовались решения, предлагавшиеся в ряде работ [1, 5; 9; 11-12] на основе классических технологий ADO/ASP и языка сценариев VBScript. Эти средства являются стандартными компонентами ОС WINDOWS, так что предлагаемые шаблоны будут работать в среде веб-сервера IIS, входящего в состав этой ОС, не требуя установки дополнительных приложений.
Создание строки подключения
В технологии ADO источник данных задается посредством строки подключения - набора пар «параметр = значение», разделенных точкой с запятой и определяющих, в частности, такие характеристики, как поставщик данных (провайдер, драйвер) и размещение источника данных.
Несмотря на наличие многочисленных справочников по составлению строк подключения к базам данных, эта задача, как свидетельствуют форумы Интернета, остается нетривиальной для многих пользователей. Поэтому работоспособность описываемых ASP-страниц была проверена со строками подключения к источникам данных различного типа. Эти примеры, приведенные ниже, могут служить шаблонами для аналогичных ситуаций.
Страница просмотра таблиц
Страница table_review.asp выводит в окно браузера все записи требуемой таблицы. Такой вывод является достаточно удобным для типичных рабочих ситуаций управленческого сайта, которые требуют, как правило, просмотра всех записей таблицы (с последующим поиском конкретных значений на полученной странице в окне браузера посредством команды Ctrl-F).
Страница представляет собой переработку скрипта из работы [5] - предусмотрена строка подключения как параметр и добавлена ссылка на библиотеку типов компонентов с определениями констант ADO, используемых при открытии источника. Странице требуются два параметра - имя таблицы table_name и строка подключения к источнику данных scr. Приведем примеры вызова страницы, отличающиеся форматом строки подключения.
Интерфейс OLE DB
1. Просмотр таблицы Customers демонстрационной базы данных northwind СУБД MS SQL Server со строкой подключения в формате OLE DB:
http://localhost/table_review.asp?table_name=customers&scr=Pr ovider='sqloledb';Data Source='ok';Integrated Security='SSPI';Initial Catalog='Northwind';
ok - имя компьютера, на котором расположена база данных.
2. Просмотр таблицы Клиенты базы данных Борей.mdb в папке DATA на диске С со строкой подключения в формате OLE DB: http://localhost/table_review.asp?table_name=Клиенты&scr=Pro vider=MicrosoftJet.OLEDB.4.0; Data Source=c:\data\Борей.mdb;User ID=Admin;Password=;
или
http://localhost/table_review.asp?table_name=Клиенты&scr=P rovider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\data\Борей.mdb;
3. Просмотр копии таблицы Authors из БД pubs СУБД MS SQL Server, сохраненной в текстовом формате csv в корне диска С: http://localhost/table_review.asp?table_name=Authors.csv&scr =Provider=MicrosoftJetOLEDB.4.0;text;DATABASE=C:\;
4. Просмотр таблицы Authors в формате Paradox-4: http://localhost/table_review.asp?table_name=Authors.db&scr =Provider=MicrosoftJet.OLEDB.4.0;Paradox 4.X;DATABASE=c:\;
Используемый в примерах веб-адрес localhost, - стандартное доменное имя локального компьютера, - означает, что страница table_review.asp лежит в каталоге C:\Inetpub\wwwroot, который автоматически создается при активации веб-сервера IIS в ОС WINDOWS. Это позволяет проверить работоспособность строк подключения непосредственно в приведенном виде (при соответствующем размещении просматриваемых файлов и таблиц), а также дает пример организации локальных данных в стиле клиент-серверных приложений.
Интерфейс Администратора источников данных ODBC
При наличии соответствующих драйверов источник данных может быть зарегистрирован на уровне операционной системы как источник данных ODBC. В таком случае строка подключения содержит только условное имя источника:
http://localhost/table_review.asp?table_name=authors&scr=filedsn=vvk
В данном случае просматривается таблица authors из демонстрационной базы данных pubs, принадлежащей СУБД MS SQL Server. Строка подключения, - filedsn=vvk, - предполагает, что БД pubs зарегистрирована как файловый источник данных с именем vvk.
Интерфейс ODBC
Далее приведены примеры строк подключения в в формате ODBC.
1. Просмотр таблицы Клиенты демонстрационной базы данных Борей.mdb, лежащей в корне диска С:
http://localhost/table_review.asp?table_name=Klients&scr=Driver ={Microsoft Access Driver (*.mdb)};DBQ=c:\Bor.mdb
Драйвер не воспринимает кириллические названия баз и таблиц. Поэтому в данном случае выполнены необходимые переименования базы данных и таблицы (однако кириллические названия полей отображаются корректно).
2. Просмотр копии таблицы Authors из БД pubs СУБД MS SQL Server, сохраненной в формате dBASE в корне диска С:
http://localhost/table_review.asp?table_name= AUTHORS &scr= Driver={Microsoft dBase Driver (*.dbf)};DriverId=277;Dbq=C:\
3. Просмотр текстового файла Authors.txt - копии таблицы Authors из БД pubs СУБД MS SQL Server, сохраненной в корне диска С: http://localhost/table_review.asp?table_name= AUTHORS.txt& scr=Driver={Microsoft text Driver (*.txt; *.csv)}; Dbq=C:\; extensions =asc,csv,tab,txt; persist security info=false
4. Просмотр копии таблицы Authors из БД pubs СУБД MS SQL Server, сохраненной в формате СУБД Paradox-4 в корне диска С: http://localhost/table_review.asp?table_name=AUTHORS& scr=Provider =MSDASQL.1;Extended Properties=«DefaultDir=C:\; Driver={Microsoft ParadoxDriver (*.db)};DriverId=26;»
Базой данных Paradox или dBASE является любая папка, в которой находится хотя бы одна таблица^ Hm.dbf. В строке подключения это указывается (для корневой папки С) как Data Source=c:\ или DefaultDir=C:\, или Dbq=C:\
Управляющая страница редактирования
Аналогичным образом адресуется управляющая страница редактирования, которой дополнительное передается третий параметр - имя индексного поля. Страница просмотра и страница редактирования могут вызываться непосредственно из адресной строки браузера. В общем случае для конкретного рабочего места удобно создать навигационную веб-страницу со ссылками на страницы просмотра / редактирования с соответствующими параметрами. На рис. 1 приведен пример такой страницы для рабочего места отдела кадров, связанного с редактированием штатной расстановки и сопоставлением ее с текущим штатным расписанием. База данных зарегистрирована как файловый источник данных с именем OK, так что строка подключения имеет простейший вид: filedsn=OK. Таблица штатной расстановки называется SR, а ее записи индексируются в столбце IDREC. Эти три параметра передаются странице редактирования Table_Editing.asp.
Таким путем пользователю предоставляется доступ только к определенным таблицам. Аналогично (в адресе URL) можно передавать и строку физического адреса базы данных. Страница параметризуется и становится действительно унифицированной, поскольку не требует настройки DSN и создания страниц просмотра с соответствующими DSN для доступа к новым БД, размещаемым
на сайте. Впрочем, как известно, конкретному имени DSN можно сопоставить любую базу данных, указав ее в параметре DATABASE.
<html> <body> <CENTER>
<H3> ПРОСМОТР ТАБЛИЦ ОТДЕЛА КАДРОВ<^3>
<H2> ВЫБОР БАЗ ДАННЫХ ДЛЯ ПРОСМОТРА И РЕДАКТИРОВА-
НИЯ</h2>
</CENTER>
<p><A HREF=«table_review.asp?table_name=SR&scr=filedsn=OK»> Штатная расстановка </A></p>
<p><A HREF=«table_review.asp?table_name=SL&scr=filedsn=OK»> штатное расписание</A></p>
<p><A HREF=«Table_Editing.asp?table_name=SR&scr =filedsn=OK& rec_ id=IDREC»>
Редактирование штатной расстановки</A></p> </body> </html>
Рисунок 1. Пример навигационной страницы для доступа к БД
Управляющая страница редактирования Table_Editing.asp организует обращение к страницам добавления, редактирования и удаления записей в таблицах некоторой базы данных. Страницу можно вызывать по ссылке, как показано на рис. 1, или непосредственно из строки браузера. Странице передаются три параметра, - строка подключения к источнику данных scr, имя редактируемой таблицы table_name и имя индексного поля (столбца) rec_id, например: http://localhost/Table_Editing.asp?table_name=MODELS&scr =FILEDSN=VVK&rec_id=IDMODEL
В окно браузера выводятся все записи и поля выбранной для редактирования таблицы и столбец флажков для указания удаляемых записей.
Добавление записи
Унифицированная страница Table_Adding_editing_record. asp добавления/редактирования записей обрабатывает параметры, полученные со страницы Table_Editing.asp, и отображает форму для редактирования существующей записи или для ввода значений полей вновь добавленной записи. Параметры ссылки <A HREF= < % =s %>> ДОБАВЛЕНИЕ ЗАПИСИ В ТАБЛИЦУ</А>
для добавления записи задаются следующей строкой s =«Table_Addmg_editmg_record.asp?scr=«& scr & «&rec_id=«& rec_id & «&table_name=«& table_name & «&p_rec_id=«
Здесь пустой номер записи p_rec_id как раз и указывает на режим добавления новой записи.
Редактирование записи
Параметры ссылки для редактирования имеющейся записи содержат конкретное значение номера редактируемой записи: z = «Table_Adding_editing_record.asp?scr=«& scr & «&rec_id=«& rec_ id & «&table_name=«& table_name & «&p_rec_id=«& tableSet(rec_id) На страницу редактирования номер записи передается в переменной p_rec_id методом GET, то есть непосредственно в строке ссылки z: <A HREF=< %=z %>> < %= tableSet.Fields(0).Value %></A>.
Переменная (объект) tableSet заведена для сохранения текущего результата запроса - набора записей RecordSet. В нашем случае запрос выбирает все строки таблицы.
Конкретный вызов страницы редактирования после подстановки параметров может выглядеть, например, следующим образом: http://localhost/Table_Adding_editing_record.asp?scr=FILEDSN=VVK &rec_id=IDMODEL&table_name=MODELS&p_rec_id=11
Для существующей записи (здесь p_rec_id=11) подобный адрес можно непосредственно набрать в адресной строке браузера для вывода формы редактирования полей. То есть страница Table_ Adding_editing_record.asp не связана жестко с управляющей страницей редактирования и может вызываться из браузера или любого веб-приложения. Однако после редактирования возврат происходит на управляющую страницу редактирования, как это предусматривает обработчик формы редактирования - модуль сохранения полей Table_Fields_Update.asp. Для изменения направления перехода достаточно заменить соответствующий фрагмент в обработчике.
Обновление полей
Обновление полей в таблице осуществляется обработчиком формы редактирования Table_Fields_Update.asp. Эта страница не содержит разметки HTML, представляя собой чистый код VBS, выполняющий обновление записи. Если признак существования записи пуст, то добавляется новая строка, в противном случае курсор позиционируется на запись по заданному номеру. Затем поля записи заполняются соответствующими значениями из формы и выдается команда на обновление таблицы.
Удаление записи Унифицированная страница Table_Removal_selected_records.
asp удаления записей является обработчиком формы на странице
Table_Editing.asp. Для удаления записи номер записи tableSet(rec_id) присваивается значению поля checkbox и передается в обработчик формы методом POST. После удаления выбранных записей происходит возврат на управляющую страницу Table_Editing.asp.
Некоторые выводы
1. Для разработки унифицированных веб-страниц доступа к базам (источникам) данных в простейшем случае удобны технология ADO и язык сценариев VBSCRIPT, поскольку они интегрированы в операционную систему WINDOWS и не требуют (в отличие от следующей версии - ADO.NET) дополнительных средств разработки и сопровождения.
2. Описанный шаблон может использоваться как простейшее веб-приложение (без клиентской части) для просмотра / редактирования через браузер баз данных любых СУБД, размещенных на веб-серверах IIS или на любых веб-серверах, поддерживающих технологию ASP. Страницы шаблона доступны для скачивания на сайте ftp:/178.215.91.20/uda.
3. Клиентская часть может формироваться в процессе эксплуатации шаблона как коллекция веб-страниц, заполненных данными соответствующих таблиц и обновляемых путем повторного вызова.
4. На локальном компьютере шаблон также может использоваться как простой универсальный интерфейс к базам данных, размещенным на этом компьютере. Для этого его достаточно разместить в стандартном каталоге c:\inetpub\wwroot веб-сервера IIS.
5. Модули шаблона автономны в том смысле, что каждый из них самостоятельно выполняет подключение к базе данных. Поэтому они могут использоваться индивидуально в любых веб-приложениях при условии корректной передачи необходимых параметров.
Возможные усовершенствования шаблона могут касаться, в частности, следующих моментов:
1. Задание всех необходимых параметров базы данных в отдельном модуле (в файле Global.asa). Однако это ликвидирует автономность страниц.
2. Проверка наличия указанной в адресе записи при автономном вызове страницы. Если запись отсутствует, то естественно перейти в режим добавления новой записи.
3. Реализация режима DITTO - копирование предыдущей записи в текущую для ускорения редактирования.
4. Задание для страницы Table_Fields_Update.asp адреса перенаправления как параметра, что необходимо при использовании в качестве стартовых страниц редактирования различных не-унифицированных страниц.
5. Совершенствование эргономического дизайна страниц.
6. Реализация описанного шаблона на различных скриптовых языках.
7. Менее элементарное усовершенствование - реализация произвольных запросов к базе данных. Однако, как отмечалось, для поставленной задачи, - обеспечение доступа к БД в рамках конкретных должностных обязанностей, - такой инструмент является излишним.
Библиографический список
1. Гомер А. Active Server Pages 3.0 для профессионалов, М.: Лори-пресс, 2002.
2. Кариев Ч. Технология Microsoft ADO.Net. М.: ИНТУИТ. 2012.
3. Литвин П., Гетц К., ГунделойМ. Разработка корпоративных приложений в Access 2002. СПб.: Питер. 2003.
4. Малик С. Microsoft ADO.NET 2.0. М.: «Вильямс», 2006.
5. Уильямс Э., Барбер К., Ньюкирк П. Active Server Page. СПб.: БХВ-Петербург, 2001.
6. Уоллс К. Spring в действии. М.: ДМК Пресс, 2013.
7. Фримен А. ASP.NET 4.5 с примерами на C# 5.0. М.: «Вильямс», 2014.
8. Фролов А.В., Фролов Г.В. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных. М.: Русская редакция. 2000.
9. ЧейзН. Active Server Page 3.0 на примерах. М.: Вильямс, 2001.
10. Юферов А.Г., Александров Е.С., Николаев М.А. Шаблон сайта отдела патентов. Препринт ФЭИ-3207. Обнинск, 2012.
11. Mitchell S. Designing Active Server Pages. O'Reilly Media. 2000.
12. Weissinger A.K. ASP in a Nutshell: A Desktop Quick Reference. O'Reilly & Associates. 1999.
А.Г. Юферов
кандидат физико-математических наук
заведующий кафедрой информационных технологий
Калужского филиала Московского финансово-юридического
университета МФЮА
E-mail: [email protected]