Доступ к базам данных с помощью языка ASP .

Active Server Pages — это обычные страницы, которые содержат скрипты, выполняющиеся на сервере наряду с обычным HTML-кодом. ASP изначально создавалось прежде всего для Microsoft IIS на платформе Windows + СУБД SQL Server . В настоящее время выполнение ASP -скриптов поддерживается и на других платформах (например, Web -сервером Apache 2 под Linux ). ASP позволяет перемешивать HTML-код с программным кодом, что, в свою очередь, позволяет легко и удобно встраивать серверные программы в страницы, причем первые будут выполняться только на стороне сервера. Еще одним мощным средством является поддержка ActiveX.

ASP использует технологию Active Data Objects ( ADO ) для поддержки языка запросов к базам данных SQL . Ранее рассмотренная нами технология называлась DAO ( Data Access Objects - объекты доступа к данным) и являлась стандартной для VB , Access и других сред, работающих с ядром доступа к данным Microsoft Jet . DAO плохо подходит для Web и лучше всего работает в традиционных приложениях типа клиент/сервер на базе Jet .

ASP поддерживает работу со всеми базами данных, соответствующими стандарту ODBC . С ASP работать очень просто. Для этого надо всего лишь вставить текст сценария ASP в пару тэгов <% %>. В остальном ASP -файл ничем не отличается от HTML -файла (за исключением, пожалуй, расширения). В сценариях ASP c равным успехом используются языки VBScript и JavaScript (реже PerlScript ). Файл , содержащий ASP- код :

<%@LANGUAGE="VBScript" CODEPAGE="1251"%>

<html>

<head>

<%

MyString = Date()

%>

</head>

<body>

<%

Response.Write "<h1>" & MyString & "</h1>"

%>

</body></html>

ADO – однозначный выбор для доступа к данным при работе с Microsoft Internet Information Server ( IIS ). Прежде всего ей требуется источник данных. Источники данных могут быть различными; одним из них является ODBC ( Open Database Connectivity – открытый протокол доступа к базам данных) . Более высокой производительности позволяет добиться OLE DB (база данных OLE ), основанная на модели объектов СОМ.

Для определённости положим, что наша БД или СУБД имеет свой драйвер ODBC , посредством которого можно организовать System DSN ( Data Source Name ) – системный источник данных для сетевого доступа (обычно размещаемый на том же компьютере, где и web -сервер). Для MS SQL Server это подключение выполнено автоматически.

ASP -сценарий, работающий с базой данных, в первую очередь должен подключиться к ней (создать экземпляр объекта типа Connection). Вот как выглядит вариант подключения к MS SQL Server через ODBC :

Set CONN = CreateObject("ADODB.Connection")

CONN.Open "DSN=DSSP-SQL; UID=creator; PWD=creator; database=BOARD"

Set RS = CreateObject("ADODB.Recordset")

После этого можно будет выполнять инструкции SQL и создавать наборы записей.

Корректное завершение работы с базой:

db.Close

Set db = Nothing

Для работы с сервером могут быть использованы два различных объекта — Command и Recordset. Практически вся необходимая обработка данных выполняется с помощью объекта Recordset, поскольку его набор свойств и методов обеспечивает возможность универсальной обработки столбцов таблиц базы данных и помещенных в них значений.

Объект Command является основополагающим в ходе выполнения любого сеанса ADO соединения с БД. Он используется для создания экземпляра объекта Recordset, по сути являющегося областью хранения промежуточных значений и предоставляющим возможность быстрого обращения к элементам (например, определенной выборки) базы данных. Это позволяет сэкономить временные и аппаратные ресурсы сервера, поскольку в данном случае транзакции с сервером выполняются лишь с целью извлечения каждого конкретного набора отдельных значений (выборки), а вся дальнейшая обработка сводится к операциям над уже извлеченным набором. Его метод Execute применяется для выполнения любых команд языка SQL, независимо от того, будут в результате выполнения команды возвращаться какие-либо данные (результаты запросов) или нет. Этот метод может использоваться и для выполнения на сервере команд администрирования или поддержки базы данных (вызов хранимых процедур — наиболее типичный случай).

CONN.Execute( " delete from _Disciplines where id_discipline=9 " )

Наиважнейшим компонентом ADO является объект набора данных recordset . Набор данных — это копия определенного фрагмента базы данных в памяти компьютера, сохраняющая структуру последней. Набор данных представляет так называемое пассивное (не подключенное) к базе данных состояние, то есть фрагмент базы данных присутствует в памяти компьютера, хотя соединение с реальной базой данных уже закрыто. Этот объект предоставляет разработчику широкий набор функциональных возможностей.

Коллекция Fields — важнейший элемент объекта Recordset. Она содержит информацию, необходимую для работы с выбранными из таблиц данными. Свойства, связанные с каждым из полей в коллекции, содержат его исчерпывающее описание — от установленного в таблице типа и размера этого поля до имени для реальной длины его значения. Свойство Value содержит значение, выбранное из поля таблицы. Для определения текущего типа представления данных предназначено свойство Type .

Пример 1:

sql ="SELECT GetDate() as Date"

Set RS = CreateObject("ADODB.Recordset")

RS.Open sql, CONN

out=RS.Fields.Item ("Date")

RS.Close

Response.Write out

Пример 2:

Dim MyData

MyData=Array()

sql ="SELECT * from _Disciplines"

RS.Open sql, CONN

i=0

do while (not RS.EOF)

redim preserve MyData(i)

MyData ( i )= RS (" name ")

RS . MoveNext

i = i +1

loop

Пара методов, AddNew и Update , позволяет добавлять новую запись к объекту Recordset и заносить значение ее полей перед добавлением в базу данных. После вызова метода AddNew полям новой записи присваиваются требуемые значения и вызывается метод Update , сохраняющий эти данные в таблице. Если не вызывать метод AddNew , вместо добавления новой записи будет выполнено обновление полей текущей записи объекта Recordset .

RS.AddNew

RS.Fields (“id”) = 1234

RS.Update

M етод Close объекта Recordset закрывает этот объект и освобождает все связанные с ним ресурсы. По окончании работы с объектом Recordset его нужно обязательно закрыть, поскольку при этом освобождаются ресурсы и на стороне сервера.

Rset.Close

Set Rset = Nothing

Метод MoveFirst — используется для перемещения к первой записи в наборе данных Recordset. При вызове этого метода свойству BOF автоматически присваивается значение TRUE. Метод MoveLast — используется для перемещения к следующей записи в наборе данных Recordset. При вызове этого метода свойству EOF автоматически присваивается значение TRUE. В свойство RecordCount помещается общее число записей набора данных объекта Recordset . Следует заметить, что, пока для перемещения в пределах буфера данных объекта Recordset не будет использован метод   MoveLast или MoveNext , значение этого свойства будет соответствовать максимальному количеству просмотренных строк.

Если один и тот же код постоянно повторяется в различных сценариях, можно переместить его в отдельный файл (расширение “. js ”), а в сценариях указывать ссылку на этот файл. Возможности ASP -сценария просмотром таблиц далеко не исчерпываются. Обычно посредством web -страниц предоставляется возможность редактировать (добавлять, изменять, удалять) записи в базе данных, сохраняя при этом конфиденциальность работы с информацией, а также осуществлять поиск. Однако структура сценария в этом случае существенно усложняется.

Начиная с версии ADO 2.0 используется концепция отсоединённого состояния . Эта концепция позволяет выполнять определенные операции над копиями наборов данных в памяти компьютера, при нахождении его в неподключенном к БД состоянии. Выгода от этого двойная: во-первых, экономится дорогой клиент-серверный канал передачи информации (промежуточные результаты не передаются, операции над наборами данных выполняются локально, а следовательно, быстрее), а во-вторых, сервер освобождается от выполнения вычислительных операций. В A SP . NET эта концепция значительно развита за счет введения нового класса DataSet (далеким потомком объекта RecordSet). Обект DataSet, в частности, позволяет динамически «держать» в памяти копии целой базы данных и выполнять все вычислительные операции именно над этим представлением базы данных, обновляя реальную базу данных лишь время от времени.

назад главная вперед