Использование диаграммы обновления в образце приложения ASP (SQLXML 4.0)

Приложение Active Server Pages (ASP) позволяет обновить сведения о заказчике в таблице Person.Contact в образце базы данных AdventureWorks в Microsoft SQL Server. Приложение выполняет следующие действия.

  • Просит пользователя ввести идентификатор контактного лица.

  • Использует это значение кода потребителя, чтобы выполнить шаблон и получить контактные сведения из таблицы Person.Contact.

  • Отображает эти сведения с использованием HTML-формы.

Затем пользователь может обновить контактные сведения, но не код потребителя (поскольку ContactID является первичным ключом). После того, как пользователь вводит данные, выполняется диаграмма обновления и все параметры формы передаются в диаграмму обновления.

Следующий шаблон является первым шаблоном (GetContact.xml). Сохраните этот шаблон в каталоге, который связан с виртуальным именем типа template.

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">   <sql:header>      <sql:param name="cid"></sql:param>   </sql:header>   <sql:query>      SELECT  *       FROM    Person.Contact      WHERE   ContactID=@cid       FOR XML AUTO   </sql:query></root>

Следующий шаблон является первым шаблоном (UpdateContact.xml). Сохраните этот шаблон в каталоге, который связан с виртуальным именем типа template.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"><updg:header>   <updg:param name="cid"/>   <updg:param name="title" />   <updg:param name="firstname" />   <updg:param name="lastname" />   <updg:param name="emailaddress" />   <updg:param name="phone" /></updg:header><updg:sync >   <updg:before>      <Person.Contact ContactID="$cid" />    </updg:before>   <updg:after>      <Person.Contact ContactID="$cid"        Title="$title"       FirstName="$firstname"       LastName="$lastname"       EmailAddress="$emailaddress"       Phone="$phone"/>   </updg:after></updg:sync></ROOT>

Следующий код является приложением ASP (SampleASP.asp). Сохраните его в каталоге, связанном с виртуальным корневым каталогом, созданным с использованием программы диспетчера интернет-служб. (Виртуальный корневой каталог не создается с использованием службы управления виртуальных каталогов IIS для программы SQL Server, так как службы управления виртуальных каталогов IIS для SQL Server не могут обращаться или идентифицировать приложения ASP.)

ПримечаниеПримечание

В исходном тексте необходимо заменить «ServerName» именем сервера, на котором выполняются службы IIS.

<% LANGUAGE=VBSCRIPT %><%  Dim ContactID  ContactID=Request.Form("cid")%><html><body><%  'If a ContactID value is not yet provided, display this form.  if ContactID="" then%><!-- If the ContactID has not been specified, display the form that allows users to enter an ID. --><form action="AdventureWorksContacts.asp" method="POST"><br>Enter ContactID: <input type=text name="cid"><br><input type=submit value="Submit this ID" ><br><br><-- Otherwise, if a ContactID is entered, display the second part of the form where the user can change customer information. --><%  else%><form name="Contacts" action="https://localhost/AdventureWorks/Template/UpdateContact.xml" method="POST">You may update customer information below.<br><br><!-- A comment goes here to separate the parts of the application or page. --><br><%  ' Load the document in the parser and extract the values to populate the form.    Set objXML=Server.CreateObject("MSXML2.DomDocument")    ObjXML.setProperty "ServerHTTPRequest", TRUE    objXML.async=False    objXML.Load("https://localhost/AdventureWorks/Template/GetContact.xml?cid=" & ContactID)    set objCustomer=objXML.documentElement.childNodes.Item(0)  ' In retrieving data from the database, if a value in the column is NULL there  '  is no attribute for the corresponding element. In this case,  ' skip the error generation and go to the next attribute.  On Error Resume Next  Response.Write "Contact ID: <input type=text readonly=true style='background-color:silver' name=cid value="""  Response.Write objCustomer.attributes(0).value  Response.Write """><br><br>"  Response.Write "Title: <input type=text name=title value="""  Response.Write objCustomer.attributes(1).value  Response.Write """><br><br>"  Response.Write "First Name: <input type=text name=firstname value="""  Response.Write objCustomer.attributes(2).value  Response.Write """><br>"  Response.Write "Last Name: <input type=text name=lastname value="""  Response.Write objCustomer.attributes(3).value  Response.Write """><br><br>"  Response.Write "Email Address: <input type=text name=emailaddress value="""  Response.Write objCustomer.attributes(4).value  Response.Write """><br><br>"  Response.Write "Phone: <input type=text name=phone value="""  Response.Write objCustomer.attributes(9).value  Response.Write """><br><br>"  set objCustomer=Nothing  Set objXML=Nothing%><input type="submit" value="Submit this change" ><br><br><input type=hidden name="contenttype" value="text/xml"><input type=hidden name="eeid" value="<%=ContactID%>"><br><br><% end if %></form></body></html>