Freigeben über


Abfragen von Daten mit dem SqlDataSource-Steuerelement (C#)

von Scott Mitchell

PDF herunterladen

In den vorherigen Tutorials haben wir das ObjectDataSource-Steuerelement verwendet, um die Präsentationsebene vollständig von der Datenzugriffsebene zu trennen. In diesem Tutorial erfahren Sie, wie das SqlDataSource-Steuerelement für einfache Anwendungen verwendet werden kann, die keine so strikte Trennung von Präsentation und Datenzugriff erfordern.

Einführung

Alle tutorials, die wir bisher untersucht haben, haben eine mehrstufige Architektur verwendet, die aus Präsentations-, Geschäftslogik- und Datenzugriffsebenen besteht. Die Datenzugriffsebene (Data Access Layer, DAL) wurde im ersten Tutorial (Erstellen einer Datenzugriffsebene) und die Geschäftslogikebene in der zweiten (Erstellen einer Geschäftslogikebene) erstellt. Ab dem Tutorial Anzeigen von Daten mit dem ObjectDataSource-Tutorial wurde gezeigt, wie Sie ASP.NET neuen ObjectDataSource-Steuerelement für ASP.NET 2.0 s verwenden, um eine deklarative Schnittstelle mit der Architektur von der Präsentationsebene aus zu verwenden.

Während alle Tutorials bisher die Architektur zum Arbeiten mit Daten verwendet haben, ist es auch möglich, datenbankdaten direkt von einer ASP.NET-Seite aus zuzugreifen, diese einzufügen, zu aktualisieren und zu löschen, wobei die Architektur umgangen wird. Dadurch werden die spezifischen Datenbankabfragen und die Geschäftslogik direkt auf der Webseite platziert. Bei ausreichend großen oder komplexen Anwendungen ist das Entwerfen, Implementieren und Verwenden einer mehrstufigen Architektur von entscheidender Bedeutung für den Erfolg, die Updataability und die Wartbarkeit der Anwendung. Die Entwicklung einer robusten Architektur kann jedoch bei der Erstellung von äußerst einfachen, einmaligen Anwendungen unnötig sein.

ASP.NET 2.0 bietet fünf integrierte Datenquellensteuerelemente SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource und SiteMapDataSource. SqlDataSource kann verwendet werden, um auf Daten direkt aus einer relationalen Datenbank zuzugreifen und sie zu ändern, einschließlich Microsoft SQL Server, Microsoft Access, Oracle, MySQL und anderen. In diesem und den nächsten drei Lernprogramm wird die Arbeit mit dem SqlDataSource-Steuerelement untersucht, wie Datenbankdaten abfragen und gefiltert werden, sowie die Verwendung von SqlDataSource zum Einfügen, Aktualisieren und Löschen von Daten.

ASP.NET 2.0 enthält Fünf-Built-In-Datenquellensteuerelemente

Abbildung 1: ASP.NET 2.0 enthält fünf Built-In Datenquellensteuerelemente

Vergleichen von ObjectDataSource und SqlDataSource

Konzeptionell sind sowohl das ObjectDataSource- als auch das SqlDataSource-Steuerelement lediglich Proxys für Daten. Wie im Tutorial Anzeigen von Daten mit objectDataSource erläutert, verfügt ObjectDataSource über Eigenschaften, die den Objekttyp angeben, der die Daten bereitstellt, und die Methoden zum Auswählen, Einfügen, Aktualisieren und Löschen von Daten aus dem zugrunde liegenden Objekttyp. Nachdem die ObjectDataSource-Eigenschaften konfiguriert wurden, kann ein Datenwebsteuerelement wie GridView, DetailsView oder DataList mit den ObjectDataSource-Methoden Select(), Insert(), Delete()und Update() an das Steuerelement gebunden werden, um mit der zugrunde liegenden Architektur zu interagieren.

SqlDataSource bietet die gleiche Funktionalität, arbeitet aber für eine relationale Datenbank und nicht für eine Objektbibliothek. Mit der SqlDataSource müssen wir die Datenbank Verbindungszeichenfolge und die ad-hoc SQL-Abfragen oder gespeicherten Prozeduren angeben, die ausgeführt werden sollen, um Daten einzufügen, zu aktualisieren, zu löschen und abzurufen. Die SqlDataSource-Methoden Select(), Insert(), Update()und Delete() stellen beim Aufruf eine Verbindung mit der angegebenen Datenbank her und stellen die entsprechende SQL-Abfrage aus. Wie das folgende Diagramm veranschaulicht, führen diese Methoden die grunzende Arbeit aus, um eine Verbindung mit einer Datenbank herzustellen, eine Abfrage auszustellen und die Ergebnisse zurückzugeben.

SqlDataSource dient als Proxy für die Datenbank

Abbildung 2: SqlDataSource dient als Proxy für die Datenbank

Hinweis

In diesem Tutorial konzentrieren wir uns auf das Abrufen von Daten aus der Datenbank. Im Tutorial Einfügen, Aktualisieren und Löschen von Daten mit dem SqlDataSource-Steuerelement erfahren Sie, wie Sie sqlDataSource so konfigurieren, dass sie das Einfügen, Aktualisieren und Löschen unterstützt.

Die Steuerelemente SqlDataSource und AccessDataSource

Zusätzlich zum SqlDataSource-Steuerelement enthält ASP.NET 2.0 auch ein AccessDataSource-Steuerelement. Diese beiden verschiedenen Steuerelemente führen dazu, dass viele Entwickler, die neu ASP.NET 2.0 sind, den Verdacht haben, dass das AccessDataSource-Steuerelement ausschließlich mit Microsoft Access mit dem SqlDataSource-Steuerelement funktioniert, das ausschließlich mit Microsoft SQL Server arbeiten soll. Während AccessDataSource speziell für Microsoft Access konzipiert ist, funktioniert das SqlDataSource-Steuerelement mit jeder relationalen Datenbank, auf die über .NET zugegriffen werden kann. Dies umfasst alle OleDb- oder ODBC-kompatiblen Datenspeicher, z. B. Microsoft SQL Server, Microsoft Access, Oracle, Informix, MySQL und PostgreSQL.

Der einzige Unterschied zwischen den AccessDataSource- und SqlDataSource-Steuerelementen besteht darin, wie die Datenbankverbindungsinformationen angegeben werden. Das AccessDataSource-Steuerelement benötigt nur den Dateipfad zur Access-Datenbankdatei. Die SqlDataSource hingegen erfordert eine vollständige Verbindungszeichenfolge.

Schritt 1: Erstellen der SqlDataSource-Webseiten

Bevor wir mit der direkten Arbeit mit Datenbankdaten mithilfe des SqlDataSource-Steuerelements beginnen, nehmen wir uns zunächst einen Moment Zeit, um die ASP.NET Seiten in unserem Websiteprojekt zu erstellen, die wir für dieses Tutorial und die nächsten drei benötigen. Beginnen Sie mit dem Hinzufügen eines neuen Ordners mit dem Namen SqlDataSource. Fügen Sie als Nächstes die folgenden ASP.NET Seiten zu diesem Ordner hinzu, und stellen Sie sicher, dass jede Seite der Site.master master Seite zugeordnet wird:

  • Default.aspx
  • Querying.aspx
  • ParameterizedQueries.aspx
  • InsertUpdateDelete.aspx
  • OptimisticConcurrency.aspx

Hinzufügen der ASP.NET Seiten für die SqlDataSource-Related Tutorials

Abbildung 3: Hinzufügen der ASP.NET Seiten für die SqlDataSource-Related Tutorials

Wie in den anderen Ordnern Default.aspx werden im SqlDataSource Ordner die Tutorials in seinem Abschnitt aufgelistet. Denken Sie daran, dass das SectionLevelTutorialListing.ascx Benutzersteuerelement diese Funktionalität bereitstellt. Fügen Sie daher dieses Benutzersteuerelement hinzuDefault.aspx, indem Sie es aus dem Projektmappen-Explorer auf die Entwurfsansicht der Seite ziehen.

Hinzufügen des SectionLevelTutorialListing.ascx-Benutzersteuerelements zu Default.aspx

Abbildung 4: Hinzufügen des SectionLevelTutorialListing.ascx Benutzersteuerelements zu (Klicken Sie hier, umDefault.aspx das bild in voller Größe anzuzeigen)

Fügen Sie schließlich diese vier Seiten als Einträge zur Web.sitemap Datei hinzu. Fügen Sie insbesondere das folgende Markup nach dem Hinzufügen benutzerdefinierter Schaltflächen zur DataList und dem Repeater <siteMapNode>hinzu:

<siteMapNode url="~/SqlDataSource/Default.aspx"
    title="Using the SqlDataSource Control"
    description="Work directly with database data using the SqlDataSource control.">
    <siteMapNode url="~/SqlDataSource/Querying.aspx" title="Retrieving Database Data"
        description="Examines how to query data from a database that can then be
                     displayed  through a data Web control."/>
    <siteMapNode url="~/SqlDataSource/ParameterizedQueries.aspx"
        title="Parameterized Queries"
        description="Learn how to specify parameterized WHERE clauses in the
                     SqlDataSource's SELECT statement." />
    <siteMapNode url="~/SqlDataSource/InsertUpdateDelete.aspx"
        title="Inserting, Updating, and Deleting Database Data"
        description="See how to configure the SqlDataSource to include INSERT, UPDATE,
                      and DELETE statements." />
    <siteMapNode url="~/SqlDataSource/OptimisticConcurrency.aspx"
        title="Using Optimistic Concurrency"
        description="Explore how to augment the SqlDataSource to include support for
                     optimistic concurrency." />
</siteMapNode>

Nehmen Sie sich nach dem Aktualisieren Web.sitemapeinen Moment Zeit, um die Tutorials-Website über einen Browser anzuzeigen. Das Menü auf der linken Seite enthält jetzt Elemente zum Bearbeiten, Einfügen und Löschen von Tutorials.

Die Siteübersicht enthält jetzt Einträge für die SqlDataSource-Tutorials

Abbildung 5: Die Siteübersicht enthält jetzt Einträge für die SqlDataSource-Tutorials

Schritt 2: Hinzufügen und Konfigurieren des SqlDataSource-Steuerelements

Öffnen Sie zunächst die Querying.aspx Seite im SqlDataSource Ordner, und wechseln Sie zur Entwurfsansicht. Ziehen Sie ein SqlDataSource-Steuerelement aus der Toolbox auf die Designer, und legen Sie es ID auf festProductsDataSource. Wie bei der ObjectDataSource erzeugt sqlDataSource keine gerenderte Ausgabe und wird daher als graues Feld auf der Entwurfsoberfläche angezeigt. Klicken Sie zum Konfigurieren von SqlDataSource im Smarttag von SqlDataSource auf den Link Datenquelle konfigurieren.

Klicken Sie im Smarttag von SqlDataSource auf die Source Link Daten konfigurieren.

Abbildung 6: Klicken Sie im Smarttag von SqlDataSource auf die Source Link Daten konfigurieren.

Dadurch wird der Assistent zum Konfigurieren von Datenquellen des SqlDataSource-Steuerelements geöffnet. Obwohl sich die Schritte des Assistenten von den ObjectDataSource-Steuerelementen unterscheiden, ist das Endziel identisch, um die Details zum Abrufen, Einfügen, Aktualisieren und Löschen von Daten über die Datenquelle bereitzustellen. Für die SqlDataSource muss die zugrunde liegende Datenbank angegeben werden, um die ad-hoc-SQL-Anweisungen oder gespeicherten Prozeduren zu verwenden und bereitzustellen.

Im ersten Schritt des Assistenten werden wir zur Eingabe der Datenbank aufgefordert. Die Dropdownliste enthält die Datenbanken, die sich im Ordner der Webanwendung App_Data befinden, und die Datenbanken, die dem Knoten Data Connections im Server-Explorer hinzugefügt wurden. Da wir bereits eine Verbindungszeichenfolge für die NORTHWIND.MDF Datenbank im App_Data Ordner zur Projektdatei Web.config hinzugefügt haben, enthält die Dropdownliste einen Verweis auf diese Verbindungszeichenfolge, NORTHWINDConnectionString. Wählen Sie dieses Element aus der Dropdownliste aus, und klicken Sie auf Weiter.

Wählen Sie den NORTHWINDConnectionString aus der Drop-Down-Liste aus.

Abbildung 7: Wählen Sie die NORTHWINDConnectionString aus der Drop-Down Liste aus.

Nachdem Sie die Datenbank ausgewählt haben, fordert der Assistent die Abfrage auf, Daten zurückzugeben. Wir können entweder die Spalten einer Tabelle oder Ansicht angeben, die zurückgegeben werden soll, oder eine benutzerdefinierte SQL-Anweisung eingeben oder eine gespeicherte Prozedur angeben. Sie können zwischen dieser Option über die Optionsfelder Benutzerdefinierte SQL-Anweisung oder gespeicherte Prozedur angeben und Spalten aus einer Tabelle oder Ansicht angeben umschalten.

Hinweis

Verwenden Sie für dieses erste Beispiel die Option Spalten aus einer Tabelle oder Ansicht angeben. Wir kehren später in diesem Tutorial zum Assistenten zurück und untersuchen die Option Benutzerdefinierte SQL-Anweisung oder gespeicherte Prozedur angeben.

Abbildung 8 zeigt den Bildschirm Anweisung auswählen konfigurieren, wenn das Optionsfeld Spalten aus einer Tabelle oder Ansicht angeben aktiviert ist. Die Dropdownliste enthält den Satz von Tabellen und Ansichten in der Northwind-Datenbank, wobei die ausgewählten Tabellen- oder Ansichtsspalten in der Kontrollkästchenliste unten angezeigt werden. In diesem Beispiel geben wir die ProductIDSpalten , ProductNameund UnitPrice aus der Products Tabelle zurück. Wie Abbildung 8 zeigt, zeigt der Assistent nach dieser Auswahl die resultierende SQL-Anweisung SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]an.

Zurückgeben von Daten aus der Tabelle

Abbildung 8: Zurückgeben von Daten aus der Products Tabelle

Nachdem Sie den Assistenten so konfiguriert haben, dass die ProductIDSpalten , ProductNameund UnitPrice aus der Products Tabelle zurückgegeben werden, klicken Sie auf die Schaltfläche Weiter. Dieser letzte Bildschirm bietet die Möglichkeit, die Ergebnisse der Abfrage zu untersuchen, die aus dem vorherigen Schritt konfiguriert wurde. Durch Klicken auf die Schaltfläche Abfrage testen wird die konfigurierte SELECT Anweisung ausgeführt und die Ergebnisse in einem Raster angezeigt.

Klicken Sie auf die Schaltfläche Abfrage testen, um Ihre SELECT-Abfrage zu überprüfen.

Abbildung 9: Klicken Sie auf die Schaltfläche Abfrage testen, um Ihre SELECT Abfrage zu überprüfen.

Zum Abschließen des Assistenten klicken Sie auf Fertig stellen.

Wie bei der ObjectDataSource weist der SqlDataSource-Assistent den Eigenschaften des Steuerelements lediglich Werte zu, nämlich den ConnectionString Eigenschaften und SelectCommand . Nach Abschluss des Assistenten sollte das deklarative Markup Ihres SqlDataSource-Steuerelements wie folgt aussehen:

<asp:SqlDataSource ID="ProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]">
</asp:SqlDataSource>

Die ConnectionString -Eigenschaft enthält Informationen zum Herstellen einer Verbindung mit der Datenbank. Dieser Eigenschaft kann ein vollständiger, hartcodierter Verbindungszeichenfolge-Wert zugewiesen werden oder auf einen Verbindungszeichenfolge in Web.configverweisen. Verwenden Sie die Syntax<%$ expressionPrefix:expressionValue %>, um auf einen Verbindungszeichenfolge-Wert in Web.config zu verweisen. In der Regel ist expressionPrefix ConnectionStrings und expressionValue ist der Name der Verbindungszeichenfolge im Web.config<connectionStrings> Abschnitt. Die Syntax kann jedoch verwendet werden, um auf Elemente oder Inhalte aus Ressourcendateien zu verweisen <appSettings> . Weitere Informationen zu dieser Syntax finden Sie unter ASP.NET Expressions Overview .

Die SelectCommand -Eigenschaft gibt die Ad-hoc-SQL-Anweisung oder gespeicherte Prozedur an, die ausgeführt werden soll, um die Daten zurückzugeben.

Schritt 3: Hinzufügen eines Datenwebsteuerelements und Binden an die SqlDataSource

Nachdem die SqlDataSource konfiguriert wurde, kann sie an ein Datenwebsteuerelement wie GridView oder DetailsView gebunden werden. In diesem Tutorial werden die Daten in einer GridView angezeigt. Ziehen Sie aus der Toolbox eine GridView auf die Seite, und binden Sie sie an die ProductsDataSource SqlDataSource, indem Sie die Datenquelle aus der Dropdownliste im Smarttag von GridView auswählen.

Hinzufügen eines GridView-Steuerelements und Binden an das SqlDataSource-Steuerelement

Abbildung 10: Hinzufügen eines GridView-Steuerelements und Binden sie an das SqlDataSource-Steuerelement (Klicken, um das bild in voller Größe anzuzeigen)

Nachdem Sie das SqlDataSource-Steuerelement in der Dropdownliste im Smarttag des GridView-Tags ausgewählt haben, fügt Visual Studio automatisch ein BoundField- oder CheckBoxField-Element zur GridView für jede vom Datenquellensteuerelement zurückgegebene Spalte hinzu. Da sqlDataSource drei Datenbankspalten ProductIDzurückgibt, ProductNameUnitPrice gibt es drei Felder in GridView.

Nehmen Sie sich einen Moment Zeit, um die drei BoundFields von GridView zu konfigurieren. Ändern Sie die ProductName Eigenschaft des Felds HeaderText in Product Name und die UnitPrice Feld s in Price. Formatieren Sie das UnitPrice Feld auch als Währung. Nachdem Sie diese Änderungen vorgenommen haben, sollte Ihr deklaratives GridView-Markup wie folgt aussehen:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ProductsDataSource"
    EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="Product Name"
            SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" HeaderText="Price"
            SortExpression="UnitPrice" DataFormatString="{0:c}"
            HtmlEncode="False" />
    </Columns>
</asp:GridView>

Besuchen Sie diese Seite über einen Browser. Wie Abbildung 11 zeigt, werden in GridView die Werte der einzelnen Produkte ProductIDaufgeführt ProductName, und UnitPrice aufgeführt.

Die GridView zeigt die Werte ProductID, ProductName und UnitPrice für jedes Produkt an.

Abbildung 11: Die GridView zeigt die Werte für jedes Produkt ProductIDan, ProductNameund UnitPrice (Klicken Sie hier, um das bild in voller Größe anzuzeigen)

Wenn die Seite besucht wird, ruft gridView die Methode des Datenquellensteuerelements Select() auf. Als wir das ObjectDataSource-Steuerelement verwendet haben, wurde die s-Methode GetProducts() der ProductsBLL Klasse aufgerufen. Mit der SqlDataSource stellt die Select() -Methode jedoch eine Verbindung mit der angegebenen Datenbank her und gibt die SelectCommand aus (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]in diesem Beispiel). Die SqlDataSource gibt ihre Ergebnisse zurück, die die GridView dann aufzählt und eine Zeile in der GridView für jeden zurückgegebenen Datenbankdatensatz erstellt.

Die Built-In Datenwebsteuerelementfeatures und das SqlDataSource-Steuerelement

Im Allgemeinen sind die Features, die den Daten-Websteuerelementen inhärent sind Paging, Sortieren, Bearbeiten, Löschen, Einfügen usw. für das Datenwebsteuerelement spezifisch und nicht vom verwendeten Datenquellensteuerelement abhängig. Das heißt, die GridView kann ihr integriertes Paging, Sortieren, Bearbeiten und Löschen verwenden, unabhängig davon, ob sie an eine ObjectDataSource oder eine SqlDataSource gebunden ist. Bestimmte Features des Datenwebsteuerelements sind jedoch für das verwendete Datenquellensteuerelement oder für die Konfiguration des Datenquellensteuerelements vertraulich.

Im Tutorial Effizientes Paging durch große Datenmengen wurde beispielsweise erläutert, wie die Auslagerungslogik für die Datenwebsteuerelemente standardmäßig alle Datensätze aus der zugrunde liegenden Datenquelle naiv zurückgibt und dann nur die entsprechende Teilmenge der Datensätze anzeigt, wenn der aktuelle Seitenindex und die Anzahl der Datensätze pro Seite angegeben sind. Dieses Modell ist beim Paging durch ausreichend große Resultsets sehr ineffizient. Glücklicherweise kann die ObjectDataSource so konfiguriert werden, dass benutzerdefiniertes Paging unterstützt wird, wodurch nur die genaue Teilmenge der anzuzeigenden Datensätze zurückgegeben wird. Dem SqlDataSource-Steuerelement fehlen jedoch die Eigenschaften für die Implementierung des benutzerdefinierten Pagings.

Eine weitere Subtilität beim Paging und Sortieren entsteht mit der SqlDataSource. Standardmäßig können die von einer SqlDataSource zurückgegebenen Daten über gridView ausgelagert oder sortiert werden. Um dies zu veranschaulichen, aktivieren Sie die Optionen Paging aktivieren und Sortierung aktivieren im Smarttag des GridView-Smarttags, Querying.aspx und überprüfen Sie, ob dies wie erwartet funktioniert.

Das Sortieren und Paging funktioniert, da sqlDataSource die Datenbankdaten in ein lose typisiertes DataSet abruft. Die Gesamtanzahl der von der Abfrage zurückgegebenen Datensätze, die ein wesentlicher Aspekt für die Implementierung der Paging ist, kann aus dem DataSet ermittelt werden. Darüber hinaus können die Ergebnisse des DataSets über eine DataView sortiert werden. Diese Funktionen werden automatisch von der SqlDataSource verwendet, wenn die GridView ausgelagerte oder sortierte Daten anfordert.

SqlDataSource kann so konfiguriert werden, dass ein DataReader anstelle eines DataSets zurückgegeben wird, indem die DataSourceMode -Eigenschaft von DataSet (standard) in DataReadergeändert wird. Die Verwendung eines DataReader kann in Situationen bevorzugt werden, in denen die SqlDataSource-Ergebnisse an vorhandenen Code übergeben werden, der einen DataReader erwartet. Da DataReaders wesentlich einfachere Objekte als DataSets sind, bieten sie zudem eine bessere Leistung. Wenn Sie diese Änderung vornehmen, kann das Datenwebsteuerelement jedoch weder sortieren noch ausblättern, da sqlDataSource nicht ermitteln kann, wie viele Datensätze von der Abfrage zurückgegeben werden, noch bietet der DataReader Techniken zum Sortieren der zurückgegebenen Daten.

Schritt 4: Verwenden einer benutzerdefinierten SQL-Anweisung oder gespeicherten Prozedur

Beim Konfigurieren des SqlDataSource-Steuerelements kann die Abfrage, die zum Zurückgeben von Daten verwendet wird, in einem von zwei Ansätzen als benutzerdefinierte SQL-Anweisung oder gespeicherte Prozedur oder als Spalten aus einer vorhandenen Tabelle oder Sicht angegeben werden. In Schritt 2 haben wir die Auswahl von Spalten aus der Products Tabelle untersucht. Sehen wir uns die Verwendung einer benutzerdefinierten SQL-Anweisung an.

Fügen Sie der Querying.aspx Seite ein weiteres GridView-Steuerelement hinzu, und wählen Sie aus der Dropdownliste im Smarttag eine neue Datenquelle aus. Geben Sie als Nächstes an, dass die Daten aus einer Datenbank abgerufen werden, um ein neues SqlDataSource-Steuerelement zu erstellen. Nennen Sie das Steuerelement ProductsWithCategoryInfoDataSource.

Erstellen eines neuen SqlDataSource-Steuerelements namens ProductsWithCategoryInfoDataSource

Abbildung 12: Erstellen eines neuen SqlDataSource-Steuerelements namens ProductsWithCategoryInfoDataSource

Auf dem nächsten Bildschirm werden wir aufgefordert, die Datenbank anzugeben. Wählen Sie NORTHWINDConnectionString wie in Abbildung 7 in der Dropdownliste das aus, und klicken Sie auf Weiter. Wählen Sie im Bildschirm Konfigurieren der Anweisung auswählen das Optionsfeld Benutzerdefinierte SQL-Anweisung oder gespeicherte Prozedur angeben aus, und klicken Sie auf Weiter. Dadurch wird der Bildschirm Benutzerdefinierte Anweisungen oder gespeicherte Prozeduren definieren geöffnet, der Registerkarten mit den Bezeichnungen SELECT, UPDATE, INSERT und DELETE enthält. Auf jeder Registerkarte können Sie eine benutzerdefinierte SQL-Anweisung in das Textfeld eingeben oder eine gespeicherte Prozedur aus der Dropdownliste auswählen. In diesem Tutorial wird die Eingabe einer benutzerdefinierten SQL-Anweisung untersucht. Das nächste Tutorial enthält ein Beispiel, das eine gespeicherte Prozedur verwendet.

Geben Sie eine benutzerdefinierte SQL-Anweisung ein, oder wählen Sie eine gespeicherte Prozedur aus.

Abbildung 13: Eingeben einer benutzerdefinierten SQL-Anweisung oder Auswählen einer gespeicherten Prozedur

Die benutzerdefinierte SQL-Anweisung kann manuell in das Textfeld eingegeben oder grafisch erstellt werden, indem Sie auf die Schaltfläche Abfrage-Generator klicken. Verwenden Sie entweder im Abfrage-Generator oder im Textfeld die folgenden Abfrage, um die ProductID Felder und ProductName aus der Products Tabelle zurückzugeben, indem Sie ein JOIN verwenden, um die Product s CategoryName aus der Categories Tabelle abzurufen:

SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Categories
    INNER JOIN Products ON
        Categories.CategoryID = Products.CategoryID

Sie können die Abfrage mithilfe des Abfrage-Generators grafisch erstellen.

Abbildung 14: Sie können die Abfrage mithilfe des Abfrage-Generators grafisch erstellen.

Nachdem Sie die Abfrage angegeben haben, klicken Sie auf Weiter, um mit dem Bildschirm Abfrage testen fortzufahren. Klicken Sie auf Fertig stellen, um den SqlDataSource-Assistenten abzuschließen.

Nach Abschluss des Assistenten werden in GridView drei BoundFields hinzugefügt, die die von der ProductIDAbfrage zurückgegebenen Spalten , ProductNameund CategoryName das folgende deklarative Markup anzeigen:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ProductsWithCategoryInfoDataSource"
    EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName"
            SortExpression="ProductName" />
        <asp:BoundField DataField="CategoryName" HeaderText="CategoryName"
            SortExpression="CategoryName" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="ProductsWithCategoryInfoDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand="
        SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
        FROM Categories
        INNER JOIN Products ON Categories.CategoryID = Products.CategoryID">
</asp:SqlDataSource>

Die GridView zeigt die ID, den Namen und den zugeordneten Kategorienamen für jedes Produkt an.

Abbildung 15: Die GridView zeigt die ID, den Namen und den zugehörigen Kategorienamen für jedes Produkt an (klicken, um das bild in voller Größe anzuzeigen)

Zusammenfassung

In diesem Tutorial haben wir erfahren, wie Sie Daten mithilfe des SqlDataSource-Steuerelements abfragen und anzeigen. Wie die ObjectDataSource dient die SqlDataSource als Proxy und bietet einen deklarativen Ansatz für den Zugriff auf Daten. Die Eigenschaften geben die Datenbank an, mit der eine Verbindung hergestellt werden soll, und die SQL-AbfrageSELECT, die ausgeführt werden soll. Sie können über die Eigenschaftenfenster oder mithilfe des Assistenten Zum Konfigurieren von Datenquellen angegeben werden.

Die SELECT Abfragebeispiele, die wir in diesem Tutorial untersucht haben, haben alle Datensätze aus der angegebenen Abfrage zurückgegeben. Das SqlDataSource-Steuerelement kann jedoch eine WHERE Klausel mit Parametern enthalten, deren Werte programmgesteuert zugewiesen oder automatisch aus einer angegebenen Quelle abgerufen werden. Im nächsten Tutorial erfahren Sie, wie Sie parametrisierte Abfragen erstellen und verwenden.

Viel Spaß beim Programmieren!

Weitere Informationen

Weitere Informationen zu den in diesem Tutorial erläuterten Themen finden Sie in den folgenden Ressourcen:

Zum Autor

Scott Mitchell, Autor von sieben ASP/ASP.NET-Büchern und Gründer von 4GuysFromRolla.com, arbeitet seit 1998 mit Microsoft-Webtechnologien. Scott arbeitet als unabhängiger Berater, Trainer und Autor. Sein neuestes Buch ist Sams Teach Yourself ASP.NET 2.0 in 24 Stunden. Er kann unter mitchell@4GuysFromRolla.comoder über seinen Blog erreicht werden, der unter http://ScottOnWriting.NETzu finden ist.

Besonderen Dank an

Diese Tutorialreihe wurde von vielen hilfreichen Prüfern überprüft. Leitende Gutachter für dieses Tutorial waren Susan Connery, Bernadette Leigh und David Suru. Möchten Sie meine anstehenden MSDN-Artikel lesen? Wenn dies der Fall ist, legen Sie eine Zeile unter abmitchell@4GuysFromRolla.com.