Condividi tramite


Cenni preliminari sul controllo server Web SqlDataSource

Aggiornamento: novembre 2007

Il controllo SqlDataSource consente di utilizzare un controllo server Web per accedere ai dati che si trovano in un database relazionale, compresi i database Microsoft SQL Server e Oracle, nonché le origini dati OLE DB e ODBC. È possibile utilizzare il controllo SqlDataSource con altri controlli con associazione a dati, ad esempio i controlli GridView, FormView e DetailsView, per visualizzare e modificare dati in una pagina Web ASP.NET, utilizzando quantità di codice limitate o nessun codice.

Vengono illustrati i seguenti argomenti:

  • Informazioni di supporto

  • Esempi di codice

  • Riferimento alle classi

Informazioni di supporto

Il controllo SqlDataSource utilizza le classi ADO.NET per interagire con qualsiasi database supportato da ADO.NET, tra cui Microsoft SQL Server (utilizzando il provider System.Data.SqlClient), System.Data.OleDb, System.Data.Odbc e Oracle (utilizzando il provider System.Data.OracleClient). L'utilizzo di un controllo SqlDataSource consente di accedere ai dati e di modificarli nella pagina ASP.NET senza utilizzare direttamente le classi ADO.NET. È sufficiente fornire una stringa di connessione per connettersi al database e definire le istruzioni SQL o le stored procedure utilizzate con i dati. In fase di esecuzione, il controllo SqlDataSource apre automaticamente la connessione al database, esegue l'istruzione SQL o la stored procedure, restituisce gli eventuali dati selezionati e chiude la connessione.

Connessione del controllo SqlDataSource a un'origine dati

Quando viene configurato un controllo SqlDataSource, la proprietà ProviderName viene configurata sul tipo di database (l'impostazione predefinita è System.Data.SqlClient), mentre la proprietà ConnectionString viene configurata su una stringa di connessione che comprende informazioni richieste per la connessione al database. Il contenuto di una stringa di connessione può differire in base al tipo di database al quale il controllo origine dati accede. Ad esempio, il controllo SqlDataSource richiede un nome del server, un nome del database (catalogo) e informazioni sulle modalità di autenticazione dell'utente in fase di connessione a un SQL Server. Per informazioni sulle stringhe di connessione valide, vedere gli argomenti sulla proprietà ConnectionString per le classi SqlConnection, OracleConnection, OleDbConnection e OdbcConnection.

Anziché impostare le stringhe di connessione in fase di progettazione come impostazioni della proprietà nel controllo SqlDataSource, è possibile memorizzarle a livello centrale come parte delle impostazioni di configurazione dell'applicazione utilizzando l'elemento di configurazione connectionStrings. In questo modo è possibile gestire le stringhe di connessione indipendentemente dal codice ASP.NET, anche crittografandole mediante Configurazione protetta. Nel seguente esempio viene mostrata una connessione a Northwind, un database di esempio di SQL Server, utilizzando una stringa di connessione memorizzata nell'elemento di configurazione connectionStrings denominato MyNorthwind.

<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>
<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>

Emissione di comandi dati con il controllo SqlDataSource

È possibile specificare fino a quattro comandi (query SQL) per il comando SqlDataSource: SelectCommand, UpdateCommand, DeleteCommand e InsertCommand. Ciascun comando è una proprietà separata del controllo origine dati. Per ogni proprietà comando, viene specificata un'istruzione SQL che verrà eseguita dal controllo origine dati. Se il controllo origine dati si connette a un database che supporta le stored procedure, anziché specificare l'istruzione SQL, è possibile indicare il nome di una stored procedure.

È possibile creare comandi con parametri che includano segnaposti per i valori da fornire in fase di esecuzione. Nell'esempio riportato di seguito viene illustrato un tipico comando SQL Select con parametri:

Select CustomerID, CompanyName From Customers Where City = @city

È possibile creare oggetti Parameter che specifichino il percorso dal quale il comando deve ottenere i valori del parametro in fase di esecuzione, ad esempio un altro controllo, una stringa di query e così via. In alternativa, è possibile specificare i valori dei parametri a livello di codice. Per ulteriori informazioni, vedere Utilizzo dei parametri con il controllo SqlDataSource.

Il controllo origine dati esegue i comandi quando viene chiamato il corrispondente metodo Select, Update, Delete o Insert. Il metodo Select viene chiamato automaticamente quando viene chiamato il metodo DataBind della pagina o di un controllo associato al controllo origine dati. È possibile anche chiamare esplicitamente uno dei quattro metodi quando si desidera che il controllo origine dati esegua un comando. Alcuni controlli, come il controllo GridView, possono chiamare i metodi automaticamente, senza dover implementare manualmente chiamate ai metodi o senza dover chiamare esplicitamente il metodo DataBind. Per ulteriori informazioni, vedere Selezione dei dati tramite il controllo SqlDataSource e Modifica dei dati tramite il controllo SqlDataSource.

Restituzione di oggetti DataSet o DataReader

Il controllo SqlDataSource può restituire i dati in due forme: come un oggetto DataSet oppure come un visualizzatore dati ADO.NET. È possibile specificare quale forma restituire impostando la proprietà DataSourceMode del controllo origine dati. Un oggetto DataSet contiene tutti i dati presenti nella memoria del server, consentendo, così, di gestirli in diversi modi dopo averli recuperati. Un lettore dati fornisce un cursore di sola lettura in grado di recuperare i singoli record. Di regola, si sceglie di ottenere un dataset quando si desidera filtrare, ordinare o spostarsi tra le pagine dei dati recuperati o se si desidera gestire una cache. Al contrario, si utilizza un lettore dati quando si desidera semplicemente ottenere i dati e si utilizza un controllo sulla pagina per visualizzare gli stessi dati. Ad esempio, l'utilizzo di un lettore dati rappresenta la soluzione ideale per ottenere i dati che si desidera visualizzare in un controllo ListBox, DropDownList o GridView in cui viene visualizzato un elenco dei risultati in un formato di sola lettura.

Inserimento nella cache con il controllo SqlDataSource

Il controllo SqlDataSource può memorizzare nella cache i dati recuperati e può quindi migliorare le prestazioni delle applicazioni evitando query onerose. L'inserimento nella cache rappresenta una soluzione valida in quasi tutti i casi in cui i dati non sono eccessivamente volatili e i risultati memorizzati nella cache sono sufficientemente ridotti da evitare un utilizzo eccessivo della memoria del sistema.

Per impostazione predefinita, l'inserimento nella cache non è attivato. È possibile attivarlo impostando EnableCaching su true. Il meccanismo di memorizzazione nella cache è basato sul tempo; è possibile impostare la proprietà CacheDuration sul numero di secondi per i quali memorizzare i dati nella cache. Il controllo origine dati gestisce una voce di cache separata per ogni combinazione di impostazioni relative a connessione, selezione del comando, selezione dei parametri e cache.

Inoltre, il controllo SqlDataSource può usufruire della funzionalità di dipendenza della cache di SQL Server, se questa è disponibile nella versione di SQL Server in uso. Questa funzionalità consente di specificare la conservazione dei dati nella cache fino a quando SQL Server segnala una modifica nella tabella specificata. Grazie a questo tipo di memorizzazione nella cache è possibile migliorare le prestazioni dell'accesso ai dati per le applicazioni Web, in quanto il recupero dei dati viene limitato alle sole volte in cui è necessario ottenere dati aggiornati.

Per ulteriori informazioni, vedere Inserimento dei dati nella cache con il controllo SqlDataSource.

Filtraggio con il controllo SqlDataSource

Se è stata abilitata la funzionalità di memorizzazione nella cache per il controllo SqlDataSource ed è stato specificato un dataset come formato dei dati restituiti da una query Select, è possibile anche filtrare i dati senza rieseguire la query. Il controllo SqlDataSource supporta una proprietà FilterExpression che consente di specificare i criteri di selezione applicati ai dati gestiti dal controllo origine dati. È inoltre possibile applicare parametri all'espressione di filtro creando particolari oggetti FilterParameters che, in fase di esecuzione, forniscono i valori all'espressione di filtro.

Ordinamento con il controllo SqlDataSource

Il controllo SqlDataSource supporta le richieste di ordinamento dal controllo associato quando la DataSourceMode è impostata su DataSet. Per ulteriori informazioni, vedere Ordinamento dei dati con i controlli origine dati.

Torna all'inizio

Esempi di codice

Selezione dei dati tramite il controllo SqlDataSource

Utilizzo dei parametri con il controllo SqlDataSource

Modifica dei dati tramite il controllo SqlDataSource

Inserimento dei dati nella cache con il controllo SqlDataSource

Procedura: attivare la funzionalità di filtro per il controllo SqlDataSource

Procedura: connettersi a un database SQL Server utilizzando il controllo SqlDataSource (Visual Studio)

Procedura: eseguire la connessione a un database Access mediante il controllo SqlDataSource (Visual Studio)

Procedura: eseguire la connessione a un database ODBC mediante il controllo SqlDataSource (Visual Studio)

Procedura: eseguire la connessione a un database Oracle mediante il controllo SqlDataSource (Visual Studio)

Torna all'inizio

Riferimento alle classi

Nella tabella riportata di seguito sono elencate le classi principali correlate al controllo SqlDataSource.

Membro

Descrizione

SqlDataSource

Classe principale per il controllo.

Torna all'inizio

Vedere anche

Concetti

Cenni preliminari sul controllo server Web LinqDataSource

Riferimenti

Cenni preliminari sul controllo server Web ObjectDataSource

Altre risorse

Controlli server Web dell'origine dati