Recuperar datos utilizando el control de servidor Web AccessDataSource

Actualización: noviembre 2007

El control AccessDataSource permite recuperar datos de una base de datos de Microsoft Access (archivo .mdb). A continuación, puede mostrar los datos en controles enlazados a datos, como los controles GridView, FormView y DetailsView.

El control AccessDataSource hereda de la clase SqlDataSource y reemplaza la propiedad ConnectionString por una propiedad DataFile para que sea más fácil de conectar a una base de datos de Microsoft Access. El control AccessDataSource utiliza el proveedor System.Data.OleDb para conectarse a las bases de datos de Access mediante el proveedor OLE DB Microsoft.Jet.OLEDB.4.0.

Conectarse a una base de datos mediante el control AccessDataSource

El control AccessDataSource se conecta al archivo de la base de datos de Microsoft Access (archivo .) identificado en la propiedad DataFile. Puede establecer la propiedad DataFile en una ruta de acceso de la convención de nomenclatura universal (UNC) que señala a un archivo de la base de datos de Access. El ejemplo siguiente muestra cómo se puede utilizar una ruta de acceso relativa a la raíz para identificar una base de datos de Access que se encuentra en la carpeta App_Data de la aplicación Web actual.

  <asp:AccessDataSource
    id="AccessDataSource1"
    DataFile="~/App_Data/Northwind.mdb"
    
    SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees">
  </asp:AccessDataSource>

Si almacena un archivo en una base de datos de Access con la aplicación Web, se recomienda que lo almacene en la carpeta App_Data para que la base de datos siga siendo privada. ASP.NET no permite que se devuelvan archivos de la carpeta App_Data si se solicitan directamente. La identidad de procesos en ASP.NET debe tener permisos de lectura y escritura de archivos para las bases de datos de Access almacenadas en la carpeta App_Data. Para obtener más información sobre la identidad de procesos en ASP.NET, vea Configurar la identidad de procesos en ASP.NET.

El control AccessDataSource establece la propiedad ProviderName de la clase SqlDataSource base en el proveedor System.Data.OleDb y se conecta utilizando el proveedor OLE DB Microsoft.Jet.OLEDB.4.0. No se pueden establecer las propiedades ProviderName o ConnectionString del control AccessDataSource.

Nota:

AccessDataSource no se conectará a una base de datos de Access que esté protegida mediante contraseña; para recuperar los datos de una base de datos de Access protegida mediante contraseña, utilice el control SqlDataSource.

Seleccionar datos mediante el control AccessDataSource

Puede especificar una consulta SQL para que ejecute el control AccessDataSource estableciendo su propiedad SelectCommand tal como se muestra en el ejemplo de código siguiente.

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

Puede devolver los resultados desde una consulta de Microsoft Access estableciendo la propiedad SelectCommandType de SelectCommand en StoredProcedure tal como se muestra en el ejemplo de código siguiente.

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

Para obtener información sobre la modificación de datos mediante el control AccessDataSource, vea Modificar datos mediante el control SqlDataSource; este tema se aplica al trabajo con el control AccessDataSource porque el control hereda la función del control SqlDataSource y hace un uso implícito del proveedor System.Data.OleDb.

Utilizar parámetros con el control AccessDataSource

Puede utilizar consultas parametrizadas para comandos y proporcionar parámetros en tiempo de ejecución. Además, puede especificar parámetros en tiempo de ejecución cuando llama a una consulta de Microsoft Access. (Para llamar a una consulta de Microsoft Access, establezca la propiedad de tipo de comando para el comando en StoredProcedure). Para obtener más información, vea Utilizar parámetros con controles de origen de datos.

Dado que el control AccessDataSource extiende la clase SqlDataSource y utiliza el proveedor System.Data.OleDb, especifique marcadores de posición de parámetros mediante el carácter del marcador de posición "? ". El proveedor System.Data.OleDb no admite parámetros con nombre; en su lugar, los valores de parámetros se aplican en el orden en el que están especificados en la colección de parámetros. Debe asegurarse de que el orden de los parámetros en la colección coincide con el orden de los marcadores de posición de los parámetros en la instrucción SQL o la consulta de Microsoft Access. Para obtener más información y ejemplos, vea Utilizar parámetros con el control SqlDataSource.

Vea también

Conceptos

Seleccionar datos mediante el control SqlDataSource