DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 308054 - Ultima modifica: martedì 8 aprile 2003 - Revisione: 2.0

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308054

In questa pagina

Sommario

Nelle procedure di questo articolo viene illustrato come creare e verificare un servizio Web che restituisce un oggetto DataSet a un client. Viene inoltre spiegato come fare riferimento al servizio Web in un'applicazione client e come visualizzare l'oggetto DataSet restituito in un controllo DataGrid.

Il codice di esempio riportato in questo articolo:
  • Consente all'utente di selezionare un sottoinsieme di record digitando una stringa di caratteri in una casella di testo nel form.
  • Utilizza il metodo String.Replace per illustrare il corretto escape di parametri di istruzioni SQL letterali.
  • Illustra come passare parametri al servizio Web e come recuperare dati.
  • Illustra come collegare record padre e figlio in un singolo oggetto DataSet e come eseguire l'associazione alla griglia per consentire lo spostamento all'interno della struttura gerarchica.
I codici di esempio riportati in questo articolo utilizzano http://localhost come server Web e il database Northwind, incluso in Microsoft SQL Server come database di backend.

Creare il servizio Web

  1. Aprire Microsoft Visual Studio .NET.
  2. Scegliere Nuovo dal menu File, quindi Progetto.
  3. Nella finestra di dialogo Nuovo progetto fare clic su Progetti di Visual Basic in Tipi progetto e su Servizio Web ASP.NET in Modelli.
  4. Nella casella di testo Nome digitare vbCustomer. Nella casella di testo Posizione digitare l'URL del server. Se si utilizza il server locale, digitare http://localhost. Scegliere OK.
  5. Passare alla visualizzazione Codice.
  6. Aggiungere il codice che segue nella parte superiore della finestra del codice:
    'Use data access objects from the SqlClient namespace.
    Imports System.Data.SqlClient
  7. Trovare il codice riportato di seguito:
    Public Class Service1
            Inherits System.Web.Services.WebService
    Aggiungere il codice riportato di seguito appena al di sotto delle due righe di codice precedenti:
    <WebMethod()> Public Function GetCustOrders(ByVal IDMask As String) As DataSet
    'IDMask is the Customer ID that the client submits.
    
    'Replace single quotation marks with two single quotation marks
    'so that all single quotation marks in the CustomerID are parsed correctly.
    IDMask = IDMask.Replace("'", "''")
    
    'Modify this connection string to use your SQL Server and log on information.
    Dim con As New SqlConnection("Server=server;uid=login;pwd=password;database=northwind")
    
    'Open the Customers table to serve as the parent table.
    Dim daCust As New SqlDataAdapter("Select * From Customers Where CustomerID Like '%" _
                                     & IDMask & "%'", con)
    
    'Open the Orders table to serve as the child table.
    Dim daOrders As New SqlDataAdapter("Select * From Orders Where CustomerID Like '%" _
                                       & IDMask & "%'", con)
    
    'Create a client-side DataSet to hold the Customers and Orders tables.
    Dim ds As New DataSet()
    
    'Explicitly open the connection to allow explicit closing.
    con.Open()
    
    'Fill the DataSet with the Customers table and the Orders table.
    daCust.Fill(ds, "Cust")
    daOrders.Fill(ds, "Orders")
    
    'Explicitly close the connection - don't wait for garbage collection.
    con.Close()
    
    'Relate Customers to Orders.
    ds.Relations.Add("CustOrd", ds.Tables!Cust.Columns!CustomerID, _
                                ds.Tables!Orders.Columns!CustomerID)
    
    'The relationship is Orders nested within Customers.
    ds.Relations(0).Nested = True
    
    'Return the DataSet to the client.
    Return ds
    
    End Function
  8. Modificare la stringa SqlConnection in base al proprio ambiente.

Verificare il servizio Web

  1. Premere F5 per compilare ed eseguire il servizio Web. Verrà restituita una pagina Web che consente di interagire con il servizio Web da Microsoft Internet Explorer.

    L'URL della pagina restituita è http://localhost/vbCustomer/Service1.asmx.
  2. Nella pagina Web Service1 fare clic su GetCustOrders. Verrà restituita una pagina Web con informazioni dettagliate sul metodo Web GetCustOrders.

    L'URL della pagina restituita è http://localhost/vbCustomer/Service1.asmx?op=GetCustOrders.
  3. Nella sezione Testo della pagina GetCustOrders digitare AL nella casella di testo Valore accanto al parametro IDMask.
  4. Scegliere il pulsante Richiama. Verrà restituita una pagina Web con i risultati del metodo Web GetCustOrders sotto forma di documento XML (Extensible Markup Language) gerarchico.

    L'URL della pagina restituita è http://localhost/vbCustomer/Service1.asmx/GetCustOrders?IDMask=AL.
  5. Chiudere le pagine Web visualizzate.

Creare l'applicazione client

  1. In Visual Studio .NET creare un nuovo progetto applicazione Windows di Visual Basic. In base all'impostazione predefinita verrà aggiunto al progetto il Form1.
  2. Aggiungere il controllo TextBox, un controllo Button e un controllo DataGrid a Form1. TextBox1, Button1 e DataGrid1 vengono aggiunti automaticamente al progetto.
  3. Scegliere Aggiungi riferimento Web dal menu Progetto. Nella finestra di dialogo Aggiungi riferimento Web attenersi alla procedura descritta di seguito:
    1. Fare clic su Riferimenti Web sul server Web locale. Verrà visualizzata una pagina Web contenente l'elenco dei servizi disponibili. Se il servizio Web non è contenuto in questo elenco, vedere la sezione Risoluzione dei problemi di seguito in questo articolo.
    2. In Riferimenti disponibili fare clic su http://localhost/vbCustomer/vbCustomer.vsdisco. Verrà visualizzata una pagina con l'elenco dei collegamenti al contratto e alla documentazione del servizio.
    3. Scegliere il pulsante Aggiungi riferimento. Per visualizzare i riferimenti Web aggiunti, scegliere Esplora soluzioni dal menu Visualizza.
  4. Nel progetto Visual Basic fare doppio clic su Button1 per aprirne la finestra del codice e incollare il codice riportato di seguito nella routine di evento Button1_Click:
            'Use the Web Service that your Web server provides.
            Dim MyService As New localhost.Service1()
            'Invoke the public WebMethod that returns a DataSet.
            'Bind the DataGrid to the returned DataSet.
            DataGrid1.DataSource = MyService.GetCustOrders(TextBox1.Text)
            DataGrid1.DataMember = "Cust"

Verificare l'applicazione client

  1. Premere F5 per compilare ed eseguire l'applicazione client.
  2. Digitare AL nella casella di testo.
  3. Fare clic su Button1. In DataGrid1 verranno visualizzati i record cliente che contengono "AL" nel campo CustomerID.
  4. In DataGrid1 fare clic sul segno più (+) accanto a ALFKI per visualizzare la relazione CustOrd definita nel metodo Web.
  5. Fare clic su CustOrd per visualizzare gli ordini correlati alla tabella clienti tramite CustomerID ALKFI.

Risoluzione dei problemi

Quando si tenta di aggiungere il riferimento Web all'applicazione client, è possibile che il nuovo servizio Web non venga visualizzato nell'elenco dei riferimenti disponibili.

Per aggirare il problema, digitare manualmente l'URL del servizio Web. Ad esempio, nella casella Indirizzo nella parte superiore della finestra di dialogo Aggiungi riferimento Web aggiungere il seguente URL:
http://localhost/vbcustomer/vbcustomer.vsdisco

RIFERIMENTI

Per ulteriori informazioni sui servizi Web, vedere l'argomento relativo alla creazione e all'accesso di servizi Web nella Guida in linea di Visual Studio .NET.


Le informazioni in questo articolo si applicano a
  • Microsoft ADO.NET (incluso in .NET Framework)
  • Microsoft Visual Basic .NET 2002 Standard Edition
Chiavi: 
kbhowto kbhowtomaster kbdatabinding kbgrpdsvbdb kbgrpdsmdac KB308054
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store