Partager via


Utilisation d’un code de mise à jour dans un exemple d’application ASP (SQLXML 4.0)

Cette application ASP (Active Server Pages) vous permet de mettre à jour les informations client dans la table Person.Contact dans l’exemple de base de données AdventureWorks dans Microsoft SQL Server. L’application effectue les opérations suivantes :

  • Demande à l’utilisateur d’entrer un ID de contact.

  • Utilise cette valeur d’ID client pour exécuter un modèle pour récupérer les informations de contact à partir de la table Person.Contact.

  • Affiche ces informations à l’aide d’un formulaire HTML.

L’utilisateur peut ensuite mettre à jour les informations de contact, mais pas l’ID de contact (car contactID est la clé primaire). Une fois que l’utilisateur a envoyé les informations, un code de mise à jour est exécuté et tous les paramètres de formulaire sont passés au code de mise à jour.

Le modèle suivant est le premier modèle (GetContact.xml). Enregistrez ce modèle dans le répertoire associé au nom virtuel du template type.

<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>  

Le modèle suivant est le deuxième modèle (UpdateContact.xml). Enregistrez ce modèle dans le répertoire associé au nom virtuel du template type.

<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>  

Le code suivant est l’application ASP (SampleASP.asp). Enregistrez-le dans le répertoire associé à une racine virtuelle que vous créez à l’aide de l’utilitaire Internet Services Manager. (Cette racine virtuelle n’est pas créée à l’aide de l’utilitaire Gestion des répertoires virtuels IIS pour SQL Server, car la gestion des répertoires virtuels IIS pour SQL Server ne peut pas accéder ou identifier les applications ASP.).

Remarque

Dans le code, vous devez remplacer « ServerName » par le nom du serveur exécutant Microsoft Internet Information Services (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>  

Voir aussi

Considérations relatives à la sécurité du code de mise à jour (SQLXML 4.0)