Достъп до база данни с ADO и ASP

Основна задача на този пример е да се покаже, как може да се изпълни SQL заявка в ASP (Active Server Page) страница и да се върне резултат в HTML таблица. Това изисква използването на ADO(ActiveX Data Objects) за установяване на връзка с източник на данни (Connection Data Source) и манипулирането им (Recordset).

Усвояването на тази технология предполага известни познания по ASP, SQL, ODBC, обектно-ориентирано програмиране и бази данни (MS Access 2000).

Източник на данни

За целите на примера се изпозва готова база данни (dbstud.mdb), реализирана на MS Access 2000, съдържаща една таблица (Екран 1) с данни за студенти и техните оценки (Students).

Students Database
Екран 1 - Примерна база данни с информация за студенти

Достъп до базата данни се осъществява посредством ODBC. За целта трябва да бъде конфигуриран драйвер за достъп до данните на база данни на MS Access 2000 и да се укаже месторазположението й на диска. От Start/Settings/Control Panel се избира ODBC Data Sources за установяване на параметрите за настройка. В секцията System DSN се добавя Microsoft Acces Driver и след избор на бутон Finish се появвява Екран 2. Тук се задава името на източника на данните и месторазположението на базата данни върху диска.

ODBC MS Access 2000 Data Source
Екран 2 - Параметризиране на ODBC за конкретна БД

Инсталираният драйвер се появява в списъка на System DSN. Избор на бутон OK завършва процедурата.

От Екран 2 е видно, че източника на данни (Data Source Name) е с име dbstud, а базата данни dbstud.mdb се намира на f:\temp\example\. Приключване на тази процедура става след избор на бутон OK. Така се изпълнява задължителната предварителна настройка на достъпа до БД.

Изграждането на ASP страница с възможност за достъп до информацията на тази БД преминава през няколко етапа.

Свързване към източника на данни

Свързването към източника на данни става с помощта на обект за връзка (Connection object). За създаването на този обект се използва CreateObject метод на Server обекта.
 

 <% Set cnDB = Server.CreateObject("ADODB.Connection") %>
 <% cnDB.Open "dbstud" %> 

Свързването на обекта за връзка (cnDB) с източника на данни (dbstud) става чрез метод Open.

Изпълнение на SQL заявка

Използването на SQL оператори в ASP страница се подчинява на синтаксиса на ASP. Оператора се присвоява на променлива strQuery, която се използва като параметър при изпълнение на зявката от типа SELECT. Полученият резултат от изпълнението на метода Execute е обект от типа Recordset и съдържа върнатите данни.
 

 <%
   strQuery = "SELECT * FROM Students ORDER BY Name"
   Set rInfo = cnDB.Execute(strQuery)
 %> 

Възможно е използването на заявки от типа UPDATE, INSERT или DELETE. Тяхното изпълнение се извършва непосредствено чрез Execute метода.

Извличане на информация

При изпълнение на заявка от типа SELECT се получава еднопосочен резултат от тип обект Recordset. Извличане на данните се извършва в циклична структура (Do While) при гранично условие край на файл (Eof).
 

 <%
    Do While Not rInfo.EOF
       табулиращи инструкции
       Response.Write(rInfo("<елемент на структура>"))
       rInfo.MoveNext
    Loop
 %> 

Първоначално Recordset обекта сочи първия ред данни, върнати след изпълнение на SQL заявка. Методът MoveNext служи за преминаване на следващ ред. След преминаване зад последния ред се включва условието Eof, с което цикълът се прекратява.
 
Табулиране на резултата

Резултатите се представят в HTML таблица, с форматиране на заглавед ред и следващите редове със съдържанието на резултата от заявката.
 

<TABLE>
  <TR>
    <TH>Фак. No</TH><TH>Име</TH><TH>Предмет</TH><TH>Оценка</TH>
  </TR>
  <% Do While Not rInfo.EOF %>
    <TR>
      <TD><% =rsInfo("FacNo") %></TD>
      <TD><% =rsInfo("Name") %></TD>
      <TD><% =rsInfo("Subject") %></TD>
      <TD><% =rsInfo("Score") %></TD>
    </TR>
  <%
    rInfo.MoveNext
    Loop
  %>
</TABLE> 

Сред HTML елементите, задаващи параметрите на таблица, се вмъкват ASP инструкции, с което се получава желаното табулиране на данните.
 
Затваряне на връзката
 
Финалната операция след изпълнение на заявката и получаване на резултатите е освобождаване и затваряне на всички използвани обекти.
 

 <%
   rInfo.Close
   Set rInfo = Nothing
   cnDB.Close
   Set cnDB = Nothing
 %> 
 
Изпълнение

Подготовката на едно самостоятелно изпълнение на този пример изисква инсталиран Уеб сървър IIS4 или PWS. Създаване на база данни dbstud.mdb на MS Access 2000, конфигуриране на ODBC. Необходимият за изпълнението ASP файл (dbstud.asp) може да се създаде с текстов редактор (Notepad) и да се запише в зоната на сървъра, например в директория  c:\inetpub\srcipts. Директорията трябва да бъде с разрешени права за "execute" и "scripts".

Резултатът от успешно изпълнение на Уеб приложение за връзка с база данни е показан на Екран 3.

ADO and ASP Results from Dbstud Database
Екран 3 - Резултат от SQL заявка

Примерът може да бъде проигран дистанционно след избор на посочената връзка тук. Съдържанието на използвания ASP файл може да се види тук.
 



Интернет за персонални компютри