Compartir a través de


Establecer enlaces a bases de datos

Actualización: noviembre 2007

Las aplicaciones Web muestran normalmente datos procedentes de una base de datos relacional como Microsoft SQL Server, Microsoft Access, Oracle, o de un almacén de datos de OLE DB u ODBC. Para simplificar la tarea de enlazar un control a los datos de una base de datos, ASP.NET proporciona el control SqlDataSource.

Control SqlDataSource

El control SqlDataSource representa una conexión directa a una base de datos en una aplicación Web. Los controles enlazados a datos como los controles GridView, DetailsView y FormView pueden utilizar el control SqlDataSource para recuperar y modificar datos automáticamente. Se especifican comandos para seleccionar, insertar, actualizar y eliminar datos como parte del control SqlDataSource, y el control realiza estas operaciones automáticamente. No es necesario escribir código (por ejemplo, código de ADO.NET que utiliza clases del espacio de nombres System.Data) para crear una conexión ni especificar comandos para consultar y actualizar una base de datos.

En el ejemplo de código siguiente se muestra un control GridView enlazado a un control SqlDataSource para recuperar, actualizar y eliminar datos.

<%@ 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>GridView Edit Example</title>
</head>
<body>
    <form id="form1" >

      <h3>GridView Edit Example</h3>

      <!-- The GridView control automatically sets the columns     -->
      <!-- specified in the datakeynames property as read-only.    -->
      <!-- No input controls are rendered for these columns in     -->
      <!-- edit mode.                                              -->
      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSqlDataSource" 
        autogeneratecolumns="true"
        autogeneratedeletebutton="true"
        autogenerateeditbutton="true"
        datakeynames="CustomerID"  
        >
      </asp:gridview>

      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="CustomersSqlDataSource"  
        selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
        updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)"
        deletecommand="Delete from Customers where CustomerID = @CustomerID"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
        >
      </asp:sqldatasource>

    </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>GridView Edit Example</title>
</head>
<body>
    <form id="form1" >

      <h3>GridView Edit Example</h3>

      <!-- The GridView control automatically sets the columns     -->
      <!-- specified in the datakeynames property as read-only.    -->
      <!-- No input controls are rendered for these columns in     -->
      <!-- edit mode.                                              -->
      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSqlDataSource" 
        autogeneratecolumns="true"
        autogeneratedeletebutton="true"
        autogenerateeditbutton="true"
        datakeynames="CustomerID"  
        >
      </asp:gridview>

      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="CustomersSqlDataSource"  
        selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
        updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address, City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID = @CustomerID)"
        deletecommand="Delete from Customers where CustomerID = @CustomerID"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
        >
      </asp:sqldatasource>

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

El control SqlDataSource conecta directamente a una base de datos y, por consiguiente, implementa un modelo de datos de dos niveles. Si se necesita enlazar un objeto comercial de nivel medio que realiza recuperaciones y actualizaciones de datos, se puede utilizar el control ObjectDataSource. Para obtener información detallada, vea Establecer enlaces con objetos comerciales.

Para obtener más información sobre el control SqlDataSource, vea Información general sobre SqlDataSource (Control de servidor Web).

Enlazar a una base de datos de Microsoft Access

ASP.NET proporciona un control AccessDataSource que simplifica la tarea de conectar a un archivo de base de datos de Microsoft Access (archivo .mdb). La clase AccessDataSource hereda de la clase SqlDataSource y conecta automáticamente a un archivo .mdb utilizando el proveedor de datos de NET Framework System.Data.OleDb y el proveedor OLE DB Microsoft.Jet.OLEDB.4.0. Para conectar a una base de datos de Access, se ha de proporcionar una ruta de acceso al archivo como la propiedad DataFile. Exceptuando la diferencia en cómo el control AccessDataSource conecta a una base de datos de Microsoft Access, el funcionamiento del control es exactamente igual al del control SqlDataSource. Para obtener más información, vea Recuperar datos utilizando el control de servidor Web AccessDataSource.

Vea también

Conceptos

Información general sobre el acceso a datos en ASP.NET

Información general sobre SqlDataSource (Control de servidor Web)

Recuperar datos utilizando el control de servidor Web AccessDataSource