назад | содержание | вперед
Взаимодействие Internet-приложений с базами данных
Усложним наш пример. Теперь при первом обращении к ASP-странице будем отображать содержимое таблицы customer базы данных, а при нажатии на кнопку Добавить будем посылать все ту же форму для ввода данных о покупателе, однако полученные результаты будем заносить опять же в базу данных.
Для доступа к базе данных будем использовать технологию ADO, поэтому откройте окно References нашего проекта и добавьте ссылки на библиотеки Microsoft ActiveX Data Objects 2.1 Library и Microsoft ActiveX Data Objects Recordset 2.0 Library (рис. 19.17).
Рис. 19.17. Добавление ссылок на библиотеки ADO
Теперь нам потребуется обрабатывать событие webciass_initialize для выполнения операций соединения с базой данных и открытия Recordset и событие WebClass_Terminate для закрытия объектов Recordset иConnection.
Подпрограмма viewCustomers () будет посылать Web-браузеру в виде HTML-потока содержимое таблицы Customer базы данных, а также размещать объект типа Submit, при нажатии на который будет производиться вызов формы для ввода информации и последующего добавления новой записи о покупателе. Ранее мы уже говорили о таком способе отправки информации на Web-сервер. В данном случае никакой информации отправлено не будет, нам важно только то, чтобы сервер получил запрос с параметром begininput и передал Web-браузеру шаблон для ввода информации о покупателе.
Обработка события webciass_BeginRequest изменена таким образом, чтобы при первом обращении показывать содержимое таблицы Customer и кнопку Добавить, при обращении к ASP-странице с параметром inputCustomer принимать информацию и добавлять полученные сведения в базу данных, а при обращении с параметром begininput предоставлять форму для ввода информации о покупателе:
Option Explicit
Option Compare Text
Dim mcnnCustomer As ADODB.Connection
Dim mrstCustomer As ADODB.Recordset
Private Sub WebClass_BeginRequest()
If Request.QueryString.Count > 0 Then
'получены данные
If Request.QueryString.Item(1) = "ihputCustomer" Then
'записать полученные данные в таблицу
With mrstCustomer
.AddNew
.Fields("ccompany").Value = Request.Form("txtccompany")
.Fields("clastname").Value = Request.Form("txtclastname")
.Fields("cfirstname").Value = Request.Form("txtcfirstname")
. Fields ("csecondnairie") .Value = Request.Form("txtcsecondname")
. Fields("czip").Value = Request.Form("txtczip")
. Fields("ccountry").Value = Request.Form("txtccountry")
.Fields("cregion").Value = Request.Form("txtcregion")
.Fields("ccity").Value = Request.Form("txtccity")
.Fields("caddress").Value = Request.Form("txtcaddress")
.Update
End With
ViewCustomers
End If
'запрос на добавление записи
If Request.QueryString.Item (1) = "begininput" Then
'отобразить форму для ввода
Customer.WriteTemplate
End If
Else
ViewCustomers
End If
End Sub
'просмотр всех записей
Private Sub ViewCustomers ()
With Response
.Clear
.Write "<HTML>"
.Write "<P align=center> Список покупателей </Р>"
.Write "<FORM NAME=frmOutputCustomer METHOD=POST ACTION=default.asp?mode=begininput>"
.Write "<INPUT name=btnAdd type=submit уа1ие=Добавить>"
If Not (mrstCustomer.BOF And mrstCustomer.EOF) Then
mrstCustomer.MoveFirst
.Write "<TABLE border=l>"
.Write "<TR>"
.Write "<TD><P align=center> Компания </TD>"
.Write "<TD><P align=center> Фамилия </TD>"
.Write "<TD><P align=center> Имя </TD>"
.Write "<TD><P align=center> Отчество </TD>"
.Write "</TR>"
Do Until mrstCustomer.EOF
.Write "<TR>"
.Write "<TD>" & mrstCustomer.Fields("ccompany") & "</TD>"
.Write "<TD>" & mrstCustomer.Fields("clastname") & "</TD>"
.Write "<TD>" & nirstCustomer.Fields("cfirstname") & "</TD>"
.Write "<TD>" & mrstCustomer.Fields("csecondname") & "</TD>"
.Write "</TR>"
mrstCustomer.MoveNext
Loop
.Write "</TABLE>"
End If
.Write "</FORM>"
.Write "</HTML>"
End With
End Sub
Private Sub WebClass_Initialize ()
Set mcnnCustomer = New ADODB.Connection
mcnnCustomer.CursorLocation = adUseClient
mcnnCustomer.Provider = "SQLOLEDB.1"
mcnnCustomer.CommandTimeout = 300
"строка для соединения, имя пользователя, пароль
mcnnCustomer.Open "Data Source= MYSERVER; Initial Catalog=SALES", "SYSADM", "SYSADM"
Set mrstCustomer = New ADODB.Recordset
mrstCustomer.Open "Customer", mcnnCustomer, adOpenKeyset, adLockOptimistic, adCmdTable
End Sub
Private Sub WebClass Terminate()
mrstCustomer.Close
Set mrstCustomer = Nothing
mcnnCustomer.Close
Set mcnnCustomer = Nothing
End Sub
Запустите проект. Перед вами достаточно простое Internet-приложение, обменивающееся информацией с базой данных и предоставляющее пользователю Web интерактивные средства для работы с этой информацией.
Замечание
Реальные Internet-приложения гораздо сложнее. Однако в нашем примере мы попытались дать тот минимальный материал, который поможет вам в дальнейшем при освоении принципов проектирования для World Wide Web.
назад | содержание | вперед