Freigeben über


Binden an Datenbanken

Aktualisiert: November 2007

In Webanwendungen werden häufig Daten angezeigt, die aus einer relationalen Datenbank stammen, wie etwa Microsoft SQL Server, Microsoft Access oder Oracle bzw. aus einem OLEDB oder ODBC-Datenspeicher. Damit ein Steuerelement noch einfacher an die Daten aus einer Datenbank gebunden werden kann, stellt ASP.NET die Steuerelemente LinqDataSource und SqlDataSource bereit.

LinqDataSource-Steuerelement

Sie können das LinqDataSource-Steuerelement verwenden, um LINQ (Language-Integrated Query) auf einer ASP.NET-Webseite per deklarativem Markup zu nutzen und Daten von einem Datenobjekt abzurufen und zu ändern. Das Steuerelement unterstützt die automatische Generierung von Auswahl-, Aktualisierungs-, Einfüge- und Löschbefehlen. Das Steuerelement unterstützt auch Sortieren, Filtern und Paging.

Beim Verwenden des LinqDataSource-Steuerelements zum Interagieren mit den Daten einer Datenbank müssen Sie das LinqDataSource-Steuerelement nicht direkt mit der Datenbank verbinden. Stattdessen interagieren Sie mit Entitätsklassen, die die Datenbank und die Tabellen darstellen. Sie können die Entitätsklassen mit dem O/R-Designer oder durch Ausführen des Dienstprogramms SqlMetal.exe generieren. Weitere Informationen finden Sie unter Object Relational Designer (O/R-Designer) und Tool zur Codegenerierung (SqlMetal.exe).

Die von Ihnen erstellten Entitätsklassen befinden sich normalerweise im Ordner App_Code der Webanwendung. Der O/R-Designer bzw. das Dienstprogramm SqlMetal.exe generieren eine Klasse, die die Datenbank darstellt, sowie eine Klasse für jede Tabelle in der Datenbank.

Sie verbinden das LinqDataSource-Steuerelement mit einer Datenbankklasse, indem Sie die ContextTypeName-Eigenschaft auf den Namen der Klasse setzen, die die Datenbank darstellt. Sie verbinden das LinqDataSource-Steuerelement mit einer bestimmten Tabelle, indem Sie die TableName-Eigenschaft auf den Namen der Klasse setzen, die die Datentabelle darstellt. Um beispielsweise eine Verbindung zur Tabelle Contacts in der Datenbank AdventureWorks herzustellen, setzten Sie die ContextTypeName-Eigenschaft auf einen Klassennamen wie AdventureWorksDataContext (bzw. den von Ihnen für das Datenbankobjekt angegebenen Namen). Setzen Sie die TableName-Eigenschaft auf Contacts.

Das folgende Beispiel zeigt ein LinqDataSource-Steuerelement, das Daten aus einer Tabelle mit dem Namen Products abruft. Die Befehle, die das Einfügen, Aktualisieren und Löschen von Daten unterstützen, werden automatisch generiert. Ein DetailsView-Steuerelement zeigt die Daten an und erstellt Schaltflächen, mit denen Benutzer die Daten bearbeiten können.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>

Weitere Informationen finden Sie unter Übersicht über das LinqDataSource-Webserversteuerelement.

Das SqlDataSource-Steuerelement

Das SqlDataSource-Steuerelement stellt in einer Webanwendung eine direkte Verbindung zu einer Datenbank dar. Datengebundene Steuerelemente, z. B. die Steuerelemente GridView, DetailsView und FormView, können das SqlDataSource-Steuerelement verwenden, um Daten automatisch abzurufen oder zu ändern. Mit dem SqlDataSource-Steuerelement können Sie Befehle zum Auswählen, Einfügen, Aktualisieren und Löschen von Daten angeben, die vom Steuerelement automatisch ausgeführt werden. Zum Herstellen einer Verbindung und zum Angeben von Befehlen für eine Datenbankabfrage oder eine Datenbankaktualisierung müssen Sie keinen Code schreiben (z. B. ADO.NET-Code mit Klassen im System.Data-Namespace).

Das folgende Codebeispiel zeigt ein GridView-Steuerelement, das zum Abrufen, Aktualisieren und Löschen von Daten an ein SqlDataSource-Steuerelement gebunden ist.

<%@ 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>

Das SqlDataSource-Steuerelement stellt eine direkte Verbindung zur Datenbank her und implementiert deshalb ein zweistufiges Datenmodell. Um an ein Geschäftsobjekt mittlerer Ebene zu binden, das Daten abruft und aktualisiert, können Sie das ObjectDataSource-Steuerelement verwenden. Ausführliche Informationen finden Sie unter Binden an Geschäftsobjekte.

Weitere Informationen über das SqlDataSource-Steuerelement finden Sie unter Übersicht über das SqlDataSource-Webserversteuerelement.

Binden an eine Microsoft Access-Datenbank

Mit der AccessDataSource stellt ASP.NET ein Steuerelement bereit, das das Herstellen einer Verbindung zu einer Microsoft Access-Datenbankdatei (MDB-Datei) stark vereinfacht. Die AccessDataSource-Klasse erbt von der SqlDataSource-Klasse und stellt über den System.Data.OleDb-Datenanbieter aus NET-Framework und den Microsoft.Jet.OLEDB.4.0-OLE DB-Anbieter automatisch eine Verbindung zu der MDB-Datei her. Um eine Verbindung mit einer Access-Datenbank herzustellen, geben Sie für die DataFile-Eigenschaft einen Dateipfad an. Abgesehen vom Mechanismus beim Herstellen einer Verbindung zu einer Microsoft Access-Datenbank funktionieren das AccessDataSource-Steuerelement und das SqlDataSource-Steuerelement genau gleich. Weitere Informationen finden Sie unter Abrufen von Daten mit dem AccessDataSource-Webserversteuerelement.

Siehe auch

Konzepte

Überblick über den ASP.NET-Datenzugriff

Übersicht über das LinqDataSource-Webserversteuerelement

Übersicht über das SqlDataSource-Webserversteuerelement

Abrufen von Daten mit dem AccessDataSource-Webserversteuerelement