Übersicht über das SqlDataSource-Webserversteuerelement

Aktualisiert: November 2007

Das SqlDataSource-Steuerelement ermöglicht den Zugriff auf Daten einer relationalen Datenbank mit einem Webserversteuerelement. Dabei kann es sich um Microsoft SQL Server- und Oracle-Datenbanken sowie um OLE DB- und ODBC-Datenquellen handeln. Das SqlDataSource-Steuerelement kann mit datengebundenen Steuerelementen, wie GridView, FormView und DetailsView, zur Darstellung und Bearbeitung von Daten auf einer ASP.NET-Webseite verwendet werden. Dafür ist nur wenig oder gar kein Code erforderlich.

Dieses Thema enthält folgende Abschnitte:

  • Hintergrund

  • Codebeispiele

  • Klassenreferenz

Hintergrund

Das SqlDataSource-Steuerelement verwendet ADO.NET-Klassen für die Interaktion mit allen Datenbanken, die von ADO.NET unterstützt werden. Dazu zählen Microsoft SQL Server (unter Verwendung des System.Data.SqlClient-Anbieters), System.Data.OleDb, System.Data.Odbc und Oracle (unter Verwendung des System.Data.OracleClient-Anbieters). Mithilfe des SqlDataSource-Steuerelements können Sie auf Daten in einer ASP.NET-Seite zugreifen und diese ändern, ohne dass Sie ADO.NET-Klassen direkt verwenden müssen. Geben Sie eine Verbindungszeichenfolge für die Verbindung zur Datenbank an, und definieren Sie anschließend die SQL-Anweisungen oder gespeicherten Prozeduren für die Arbeit mit den Daten. Zur Laufzeit stellt das SqlDataSource-Steuerelement automatisch eine Verbindung zur Datenbank her, führt die SQL-Anweisung oder die gespeicherte Prozedur aus und gibt, falls vorhanden, die ausgewählten Daten zurück. Danach wird die Verbindung zur Datenbank wieder geschlossen.

Verbinden des SqlDataSource-Steuerelements mit einer Datenquelle

Beim Konfigurieren eines SqlDataSource-Steuerelements legen Sie die ProviderName-Eigenschaft auf den Typ der Datenbank (der Standardwert ist System.Data.SqlClient) und die ConnectionString-Eigenschaft auf eine Verbindungszeichenfolge fest, die die Informationen enthält, die zum Herstellen einer Verbindung zur Datenbank benötigt werden. Der Inhalt der Verbindungszeichenfolge unterscheidet sich je nach Typ der Datenbank, auf die das Datenquellensteuerelement zugreift. So erfordert zum Beispiel das SqlDataSource-Steuerelement einen Servernamen, einen Datenbanknamen (Katalognamen) sowie Informationen zur Authentifizierung des Benutzers, wenn die Verbindung zum SQL Server hergestellt wird. Weitere Informationen zu gültigen Verbindungszeichenfolgen finden Sie in den Themen zur ConnectionString-Eigenschaft der SqlConnection-Klasse, der OracleConnection-Klasse, der OleDbConnection-Klasse und der OdbcConnection-Klasse.

Anstatt die Verbindungszeichenfolge zur Entwurfszeit als Eigenschafteneinstellung im SqlDataSource-Steuerelement festzulegen, können Sie die Zeichenfolge zentral als Teil der Konfigurationseinstellungen der Anwendung speichern, indem Sie das connectionStrings-Konfigurationselement verwenden. Dadurch können Sie die Verbindungszeichenfolgen unabhängig vom ASP.NET-Code verwalten und sie beispielsweise mithilfe der Geschützten Konfiguration verschlüsseln. Das folgende Beispiel veranschaulicht eine Verbindung zur SQL Server-Beispieldatenbank Northwind, wobei eine Verbindungszeichenfolge verwendet wird, die im connectionStrings-Konfigurationselement mit dem Namen MyNorthwind gespeichert 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>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>

Ausgeben von Datenbefehlen mit dem SqlDataSource-Steuerelement

Sie können bis zu vier Befehle (SQL-Abfragen) für den SqlDataSource-Befehl angeben: SelectCommand, UpdateCommand, DeleteCommand und InsertCommand. Jeder Befehl ist eine separate Eigenschaft des Datenquellensteuerelements. Für jede Befehlseigenschaft geben Sie eine SQL-Anweisung an, die das Datenquellensteuerelement ausführen soll. Wenn das Datenquellensteuerelement eine Verbindung zu einer Datenbank herstellt, die gespeicherte Prozeduren unterstützt, können Sie anstelle einer SQL-Anweisung den Namen einer gespeicherten Prozedur für einen Befehl angeben.

Es ist möglich, parametrisierte Befehle mit Platzhaltern für Werte zu erstellen, die erst zur Laufzeit bereitgestellt werden. Im folgenden Beispiel wird ein typischer parametrisierter SQL Select-Befehl gezeigt:

Select CustomerID, CompanyName From Customers Where City = @city

Sie können Parameterobjekte erstellen, die angeben, woher der Befehl zur Laufzeit die Parameterwerte abrufen soll, z. B. von einem anderen Steuerelement, aus einer Abfragezeichenfolge usw. Alternativ können Sie die Parameterwerte programmgesteuert angeben. Weitere Informationen finden Sie unter Verwenden von Parametern mit dem SqlDataSource-Steuerelement.

Das Datenquellensteuerelement führt die Befehle aus, wenn eine der zugehörigen Methoden Select, Update, Delete oder Insert aufgerufen wird. Die Select-Methode wird automatisch aufgerufen, wenn Sie die DataBind-Methode der Seite oder eines Steuerelements aufrufen, das an das Datenquellensteuerelement gebundenen ist. Jede der vier Methoden kann auch explizit aufgerufen werden, wenn das Datenquellensteuerelement einen Befehl ausführen soll. Einige Steuerelemente, z. B. das GridView-Steuerelement, können die Methoden automatisch aufrufen, ohne dass Sie diese Methoden oder die DataBind-Methode explizit aufrufen müssen. Weitere Informationen finden Sie unter Auswählen von Daten mithilfe des SqlDataSource-Steuerelements und Bearbeiten von Daten mithilfe des SqlDataSource-Steuerelements.

Zurückgeben von DataSet-Objekten und DataReader-Objekten

Das SqlDataSource-Steuerelement kann Daten in zwei Formen zurückgeben: als ein DataSet-Objekt oder als einen ADO.NET-Datenreader. Sie können festlegen, in welcher Form die Daten zurückgegeben werden, indem Sie die DataSourceMode-Eigenschaft des Datenquellensteuerelements festlegen. Ein DataSet-Objekt enthält alle Daten, die sich im Serverspeicher befinden. Nach dem Abrufen können diese Daten auf verschiedene Arten manipuliert werden. Ein Datenreader stellt einen schreibgeschützten Cursor bereit, der einzelne Datensätze nur lesen und abrufen kann. In der Regel wird ein Dataset für die Rückgabe verwendet, wenn Sie die Daten nach dem Abrufen filtern, sortieren oder durchblättern möchten oder wenn die Daten in einem Cache gespeichert werden sollen. Ein Datenreader wird im Gegensatz dazu verwendet, wenn Sie die Daten einfach nur zurückgeben und mithilfe eines Steuerelements in der Seite anzeigen möchten. So ist zum Beispiel die Verwendung eines Datenreaders bei der Rückgabe von Daten ideal, die Sie in einem ListBox-Steuerelement, einem DropDownList-Steuerelement oder einem GridView-Steuerelement anzeigen möchten, in denen eine Ergebnisliste angezeigt wird, die nur gelesen werden kann.

Zwischenspeichern von Daten mithilfe des SqlDataSource-Steuerelements

Das SqlDataSource-Steuerelement kann abgerufene Daten zwischenspeichern. Dies kann die Leistung der Anwendung verbessern, da zeitintensive Abfragen vermieden werden. Das Zwischenspeichern von Daten ist in fast allen Situationen sinnvoll, in denen die Daten keinen schnellen Veränderungen unterliegen und die zwischengespeicherten Ergebnisse von so geringem Umfang sind, dass nicht zuviel Systemspeicher belegt wird.

Das Zwischenspeichern ist standardmäßig nicht aktiviert. Sie können es aktivieren, indem Sie EnableCaching auf true festlegen. Der Zwischenspeichermechanismus ist zeitbasiert. Mithilfe der CacheDuration-Eigenschaft können Sie die Anzahl der Sekunden festgelegt, für deren Dauer Daten zwischengespeichert werden sollen. Das Datenquellensteuerelement verwaltet für jede Kombination von Verbindung, Select-Befehlen, Select-Parametern und Cacheeinstellungen einen separaten Cacheeintrag.

Das SqlDataSource-Steuerelement kann auch das Cacheabhängigkeitsfeature von SQL Server verwenden (falls dies in Ihrer Version von SQL Server verfügbar ist). Mit diesem Feature können Sie festlegen, dass die Daten im Cache vorgehalten werden sollen, bis SQL Server eine Änderung in der jeweiligen Tabelle feststellt. Mit diesem Typ des Zwischenspeicherns können Sie die Leistung des Datenzugriffs in der Webanwendung verbessern, da der Abruf von Daten nur noch dann erfolgt, wenn aktualisierte Daten abgerufen werden müssen.

Weitere Informationen finden Sie unter Zwischenspeichern von Daten mithilfe des SqlDataSource-Steuerelements.

Filtern mit dem SqlDataSource-Steuerelement

Wenn Sie das Zwischenspeichern für das SqlDataSource-Steuerelement aktiviert und ein Dataset als Format für die Daten festgelegt haben, die von einer Select-Abfrage zurückgegeben werden, können Sie die Daten auch ohne erneutes Ausführen der Abfrage filtern. Das SqlDataSource-Steuerelement unterstützt eine FilterExpression-Eigenschaft. Mithilfe dieser Eigenschaft können Sie Auswahlkriterien festlegen, die auf die vom Datenquellensteuerelement verwalteten Daten angewendet werden sollen. Sie können den Filterausdruck auch parametrisieren, indem Sie spezielle FilterParameters-Objekte erstellen, die zur Laufzeit Werte für den Filterausdruck bereitstellen.

Sortieren mit dem SqlDataSource-Steuerelement

Das SqlDataSource-Steuerelement unterstützt Sortieranweisungen des gebundenen Steuerelements, wenn der DataSourceMode auf DataSet festgelegt ist. Weitere Informationen finden Sie unter Sortieren von Daten mithilfe von Datenquellensteuerelementen.

Zurück nach oben

Codebeispiele

Auswählen von Daten mithilfe des SqlDataSource-Steuerelements

Verwenden von Parametern mit dem SqlDataSource-Steuerelement

Bearbeiten von Daten mithilfe des SqlDataSource-Steuerelements

Zwischenspeichern von Daten mithilfe des SqlDataSource-Steuerelements

Gewusst wie: Aktivieren des Filterns für das SqlDataSource-Steuerelement

Gewusst wie: Verbinden mit einer SQL Server-Datenbank mithilfe des SqlDataSource-Steuerelements (Visual Studio)

Gewusst wie: Herstellen einer Verbindung zu einer Access-Datenbank mithilfe des SqlDataSource-Steuerelements (Visual Studio)

Gewusst wie: Herstellen einer Verbindung zu einer ODBC-Datenbank mithilfe des SqlDataSource-Steuerelements (Visual Studio)

Gewusst wie: Herstellen einer Verbindung zu einer Oracle-Datenbank mithilfe des SqlDataSource-Steuerelements (Visual Studio)

Zurück nach oben

Klassenreferenz

In der folgenden Tabelle werden die Hauptklassen aufgelistet, die sich auf das SqlDataSource-Steuerelement beziehen.

Member

Beschreibung

SqlDataSource

Die Hauptklasse des Steuerelements.

Zurück nach oben

Siehe auch

Konzepte

Übersicht über das LinqDataSource-Webserversteuerelement

Referenz

Übersicht über das ObjectDataSource-Webserversteuerelement

Weitere Ressourcen

Datengebundene Webserversteuerelemente