Recupero dei dati tramite il controllo server Web AccessDataSource
Aggiornamento: novembre 2007
Il controllo AccessDataSource consente di recuperare i dati da un database di Microsoft Access (file con estensione mdb). È quindi possibile visualizzare i dati in controlli con associazione a dati, come i controlli GridView, FormView e DetailsView.
Il controllo AccessDataSource eredita la classe SqlDataSource e sostituisce la proprietà ConnectionString con una proprietà DataFile per semplificare la connessione a un database di Microsoft Access. Il controllo AccessDataSource utilizza il provider System.Data.OleDb per connettersi ai database di Access mediante il provider OLE DB Microsoft.Jet.OLEDB.4.0.
Connessione a un database tramite il controllo AccessDataSource
Il controllo AccessDataSource consente di connettersi al file di database di Microsoft Access (file mdb) identificato nella proprietà DataFile. È possibile impostare la proprietà DataFile su un percorso UNC (Universal Naming Convention) che punti a un file di database di Access. Nell'esempio riportato di seguito viene illustrata la modalità di utilizzo di un percorso relativo alla directory principale per identificare un database di Access memorizzato nella cartella App_Data dell'applicazione Web corrente.
<asp:AccessDataSource
id="AccessDataSource1"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees">
</asp:AccessDataSource>
Se si memorizza un file di database di Access nell'applicazione Web, è consigliabile utilizzare la cartella App_Data per garantirne la riservatezza. In ASP.NET non è possibile restituire i file contenuti nella cartella App_Data se richiesti direttamente. È necessario concedere all'identità del processo ASP.NET autorizzazioni di accesso in lettura e scrittura ai file dei database memorizzati nella cartella App_Data. Per informazioni sull'identità del processo ASP.NET, vedere Configurazione dell'identità dei processi ASP.NET.
Il controllo AccessDataSource consente di impostare la proprietà ProviderName della classe SqlDataSource base sul provider System.Data.OleDb ed eseguire la connessione mediante il provider OLE DB Microsoft.Jet.OLEDB.4.0. Non è possibile impostare le proprietà ProviderName o ConnectionString del controllo AccessDataSource.
Nota: |
---|
Il controllo AccessDataSource non eseguirà la connessione a un database di Access protetto da password. Per recuperare dati da un database di questo tipo, utilizzare il controllo SqlDataSource. |
Selezione dei dati tramite il controllo AccessDataSource
È possibile specificare una query SQL che deve essere eseguita dal controllo AccessDataSource impostandone la relativa proprietà SelectCommand, come illustrato nell'esempio di codice riportato di seguito.
<form id="form1" >
<asp:AccessDataSource
id="EmployeesAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />
<asp:GridView
id="EmployeesGridView"
AutoGenerateColumns="True"
DataSourceid="EmployeesAccessDataSource" />
<form id="form1" >
<asp:AccessDataSource
id="EmployeesAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />
<asp:GridView
id="EmployeesGridView"
AutoGenerateColumns="True"
DataSourceid="EmployeesAccessDataSource" />
È possibile restituire risultati da una query di Microsoft Access impostando la proprietà SelectCommandType di SelectCommand su StoredProcedure, come illustrato nell'esempio di codice riportato di seguito.
<asp:AccessDataSource
id="InvoiceAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="[Employee Sales By Country]"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="Beginning Date" Type="DateTime" defaultValue="1/1/1997" />
<asp:Parameter Name="Ending Date" Type="DateTime" defaultValue="1/31/1997" />
</SelectParameters>
</asp:AccessDataSource>
<asp:GridView
id="InvoiceGridView"
AutoGenerateColumns="True"
DataSourceid="InvoiceAccessDataSource" />
<asp:AccessDataSource
id="InvoiceAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
SelectCommand="[Employee Sales By Country]"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="Beginning Date" Type="DateTime" defaultValue="1/1/1997" />
<asp:Parameter Name="Ending Date" Type="DateTime" defaultValue="1/31/1997" />
</SelectParameters>
</asp:AccessDataSource>
<asp:GridView
id="InvoiceGridView"
AutoGenerateColumns="True"
DataSourceid="InvoiceAccessDataSource" />
Per informazioni sulla modifica dei dati tramite il controllo AccessDataSource, vedere Modifica dei dati tramite il controllo SqlDataSource. Tale argomento si riferisce all'utilizzo del controllo AccessDataSource in quanto quest'ultimo eredita la funzionalità del controllo SqlDataSource e utilizza implicitamente il provider System.Data.OleDb.
Utilizzo dei parametri con il controllo AccessDataSource
È possibile utilizzare query con parametri per i comandi e specificare parametri in fase di esecuzione, nonché quando viene chiamata una query di Microsoft Access. Per chiamare una query di Microsoft Access, è necessario impostare la proprietà relativa al tipo di comando su StoredProcedure. Per ulteriori informazioni, vedere Utilizzo di parametri con controlli origine dati.
Poiché il controllo AccessDataSource estende la classe SqlDataSource e utilizza il provider System.Data.OleDb, è necessario specificare i segnaposto dei parametri utilizzando il carattere"?". Il provider System.Data.OleDb non supporta i parametri denominati e i valori dei parametri vengono applicati in base all'ordine con cui vengono specificati nell'insieme di parametri. È necessario verificare che l'ordine dei parametri nell'insieme corrisponda all'ordine dei segnaposto dei parametri nell'istruzione SQL o nella query di Microsoft Access. Per ulteriori informazioni ed esempi, vedere Utilizzo dei parametri con il controllo SqlDataSource.