HOW TO: Creare e utilizzare un DataSet tipizzato utilizzando Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 320714 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come creare e utilizzare un DataSet tipizzato in una piccola applicazione Web. I DataSet tipizzati, che ereditano dalla classe DataSet, creano i membri di prima classe dei DataTable e DataColumn di un DataSet, garantendo i numerosi vantaggi derivanti dall'utilizzo della tipizzazione forte.

Requisiti

Di seguito sono elencati l'hardware, il software, l'infrastruttura di rete, le capacitā, le conoscenze e i service pack necessari per completare questa procedura:
  • Microsoft SQL Server 6.5 o versione successiva con il database Northwind
In questo articolo si presuppone la conoscenza dei seguenti argomenti:
  • Conoscenza generale di Microsoft SQL Server
  • Conoscenza generale di Microsoft Visual Studio .NET
  • Conoscenza generale di Microsoft ADO.NET
  • Conoscenza generale dei controlli Web di Microsoft .NET

DataSet tipizzati

Attenersi alla procedura descritta di seguito per creare una piccola applicazione Web utilizzando Visual Studio .NET. Nell'applicazione Web viene utilizzato un DataSet tipizzato per visualizzare i risultati di una query SQL improvvisata nel database Northwind.
  1. Avviare Visual Studio .NET.
  2. Creare un nuovo progetto applicazione Web denominato TDS in Visual C# .NET.
  3. Assicurarsi che Esplora soluzioni sia visualizzato. Se Esplora soluzioni non č visualizzato, premere CTRL+ALT+L.
  4. Verificare che il file WebForm1.aspx sia aperto nella finestra dell'editor. Se il file non č aperto, fare doppio clic su WebForm1.aspx in Esplora soluzioni per aprire il file.
  5. Nella finestra dell'editor fare clic su Progettazione per passare alla visualizzazione Progettazione.
  6. Per aprire la casella degli strumenti, premere CTRL+ALT+X. Nella casella degli strumenti fare clic su Web Form. Selezionare e trascinare quanto segue nell'angolo superiore sinistro della pagina: due etichette di una riga ciascuna seguite da una casella di testo (posizionata a destra di ciascuna etichetta). Al di sotto di esse aggiungere un DataGrid nello stesso modo.
  7. Fare clic sull'etichetta superiore. Premere F4 per visualizzare la finestra Proprietā. Cambiare Proprietā Text in Prodotto. Fare clic sull'altra etichetta e quindi cambiare Proprietā Text in Categoria.
  8. Per aggiungere un nuovo DataSet al progetto, premere CTRL+MAIUSC+A e quindi fare clic su DataSet nell'elenco di modelli. Assegnare al DataSet il nome seguente: dsProducts.xsd. Si noti che il file č in realtā uno schema XML. Scegliere OK. Nella finestra dell'editor verrā visualizzata una pagina giallo chiaro.
  9. Per creare un DataSet tipizzato, premere CTRL+ALT+S per aprire Esplora server.
  10. Fare clic su Server, su nome computer, su SQL Server, su nome server, quindi su Northwind e infine su Viste.
  11. Selezionare la vista di SQL Server per Northwind Alphabetical list of products e quindi trascinare la vista sulla pagina giallo chiaro DataSet. Nella pagina verrā visualizzata una rappresentazione visiva del gruppo di risultati generato dalla vista. Per visualizzare il formato XML effettivo del file di schema, fare clic sul pulsante XML sotto la finestra dell'editor.
  12. Esiste ora uno schema basato su un oggetto SQL Server. Per creare e compilare un DataSet tipizzato, č prima necessario generare la classe associata allo schema. Fare clic con il pulsante destro del mouse sulla visualizzazione Progettazione e quindi verificare che l'opzione Genera Dataset sia selezionata. In caso contrario, selezionarla. Premere CTRL+S per salvare lo schema e generare la classe.
  13. Per visualizzare la nuova classe DataSet tipizzata, fare clic su Mostra tutti i file in Esplora soluzioni.
  14. Espandere l'albero accanto a dsProducts.xsd. Verrā visualizzato un file dsProducts.vb, contenente la nuova classe associata allo schema. Verrā inoltre visualizzato un file dsProducts.xsx, utilizzato per rilevare le modifiche ai file.
  15. Per scrivere il codice per visualizzare il DataSet tipizzato, fare doppio clic direttamente sul Web Form (non su un controllo Web). Viene visualizzato il codebehind del Web Form e il punto di inserimento si trova all'interno dell'evento Page_Load.
  16. Per includere le classi che si trovano nello spazio dei nomi System.Data.SqlClient, aggiungere la seguente istruzione using all'inizio del codebehind:
    using System.Data.SqlClient;
    					
    NOTA: Nel progetto viene fatto automaticamente riferimento agli altri spazi dei nomi necessari per questa piccola applicazione Web quando si crea un'applicazione Web in Visual Studio .NET.

  17. Nella routine evento Page_Load creare un oggetto Connection passando la stringa di connessione al costruttore predefinito della classe SqlConnection:
    SqlConnection cn = new SqlConnection("server=myserver;uid=myuid;pwd=mypassword;database=northwind");
    					
  18. Creare un oggetto SqlCommand che verrā quindi passato all'oggetto SqlDataAdapter. Passare un'istruzione SQL improvvisata e il nuovo oggetto Connection al costruttore SqlCommand. Il primo imposta la proprietā CommandText del nuovo oggetto SqlCommand. Č inoltre possibile passare il nome di una stored procedure.
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
    					
  19. Creare un'istanza dell'oggetto SqlDataAdapter, passando il nuovo oggetto SqlCommand al costruttore:
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    					
  20. Verranno quindi creati gli oggetti necessari per connettersi al database e restituire i dati. Di seguito č riportato il codice per il DataSet tipizzato. Si noti che viene creata un'istanza della classe dsProducts: la classe associata allo schema dsProducts e che eredita dalla classe DataSet, non la classe DataSet generica stessa.
    dsProducts tds = new dsProducts();
    					
  21. Chiamare il metodo Fill di SqlDataAdapter, passando l'oggetto DataSet tipizzato e la proprietā DataTable TableName tipizzata di DataSet:
    da.Fill(tds, tds.Tables[0].TableName);
    					
  22. Per impostare la proprietā Text dei controlli caselle di testo sulle colonne fortemente tipizzate in DataTable di DataSet tipizzato, utilizzare il formato seguente:
    dsProducts.DataTableName[RowIndex].ColumnName
    						
    Per questa applicazione di esempio, RowIndex č specificato a livello di codice su 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
    TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 
    						
    Poiché l'insieme Rows č a base zero, quando la pagina viene caricata, si noti che nei controlli caselle di testo vengono visualizzati i nomi di prodotto e di categoria dell'articolo nella sesta riga del DataGrid.
  23. Per visualizzare tutti i risultati nel DataGrid, impostare la proprietā DataSource del DataGrid sul nuovo DataSet tipizzato e chiamare DataBind():
    DataGrid1.DataSource = tds;
    DataGrid1.DataBind();
    					

Listato codice completo (WebForm1.aspx)

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TDS.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
	<title>WebForm1</title>
	<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
	<meta name="CODE_LANGUAGE" Content="C#">
	<meta name="vs_defaultClientScript" content="JavaScript">
	<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
	<form id="Form1" method="post" runat="server">
		<asp:Label id="Label1"  runat="server" >Label</asp:Label>
		<asp:DataGrid id="DataGrid1"  runat="server" ></asp:DataGrid>
		<asp:TextBox id="TextBox2"  runat="server"></asp:TextBox>
		<asp:TextBox id="TextBox1"  runat="server"></asp:TextBox>
		<asp:Label id="Label2"  runat="server" >Label</asp:Label>
	</form>
</body>
</HTML>
				

Listato codice completo (WebForm1.aspx.cs)

using System.Data.SqlClient;

namespace TDS
{
  /// <summary>
  /// Summary description for WebForm1.
  /// </summary>
  public class WebForm1 : System.Web.UI.Page
  {
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.WebControls.Label Label2;
    protected System.Web.UI.WebControls.TextBox TextBox1;
    protected System.Web.UI.WebControls.TextBox TextBox2;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
	
    private void Page_Load(object sender, System.EventArgs e) 
    {
	SqlConnection cn = new SqlConnection("server=localhost;uid=sa;pwd=abcd;database=northwind");
	SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);
	SqlDataAdapter da = new SqlDataAdapter(cmd);
	dsProducts tds = new dsProducts();

	da.Fill(tds, tds.Tables[0].TableName);
	TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;
	TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 

         DataGrid1.DataSource = tds;
	DataGrid1.DataBind();

    }

    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
	// 
	// CODEGEN: This call is required by the ASP.NET Web Form Designer.
	// 
	InitializeComponent();
	base.OnInit(e);
    }
		
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {    
	this.TextBox1.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);
	this.Load += new System.EventHandler(this.Page_Load);

    }
    #endregion
  }
}

				

Verifica

Premere F5 per eseguire l'applicazione Web. Nel browser vengono visualizzati "Uncle Bob's Organic Dried Pears" nella casella di testo Prodotto e "Produce" nella casella di testo Categoria. Sotto le caselle di testo viene visualizzato un DataGrid in cui sono state inserite le informazioni sul prodotto.

Risoluzione dei problemi

  • Per i DataSet generici non č necessario passare un TableName quando si chiama il metodo Fill. Questa operazione, tuttavia, č necessaria per i DataSet tipizzati, anche se si accede all'insieme Table del DataSet tramite gli indici invece che tramite il TableName. L'errore nel passaggio del TableName del DataSet tipizzato genera un errore "Nessuna riga alla posizione 0" in fase di esecuzione. Questo requisito dei DataSet tipizzati comporta anche l'impossibilitā di costituire un TableName personalizzato e la necessitā di passare quello a cui si fa riferimento nella classe DataSet tipizzata, a cui si accede come indicato nel codice precedente.
  • Eventuali modifiche manuali apportate allo schema generato da Visual Studio .NET vengono sovrascritte se si modifica l'oggetto database utilizzato inizialmente per generare lo schema e la classe DataSet tipizzata e lo si trascina nuovamente sulla visualizzazione Progettazione dello schema. Č in genere preferibile apportare le modifiche necessarie a livello di Microsoft SQL Server e generare un nuovo DataSet tipizzato piuttosto che modificare lo schema risultante.

Riferimenti

Per ulteriori informazioni sull'utilizzo di un DataSet tipizzato, vedere il seguente sito Web Microsoft (informazioni in lingua inglese):
http://msdn2.microsoft.com/it-it/library/esbykkzb(vs.80).aspx


Proprietā

Identificativo articolo: 320714 - Ultima modifica: venerdė 15 giugno 2007 - Revisione: 2.1
Le informazioni in questo articolo si applicano a
  • Microsoft ADO.NET (incluso in .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Chiavi: 
kbhowtomaster KB320714
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.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com