Freigeben über


Abfragen von Daten mit dem SqlDataSource-Steuerelement (VB)

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 bisher untersuchten Tutorials 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 im zweiten Tutorial (Erstellen einer Geschäftslogikebene) erstellt. Beginnend mit dem Tutorial Anzeigen von Daten mit dem ObjectDataSource-Tutorial haben wir erfahren, wie Sie ASP.NET neuen ObjectDataSource-Steuerelement verwenden, um deklarativ mit der Architektur der Präsentationsebene zu arbeiten.

Obwohl bisher alle Tutorials die Architektur für die Arbeit mit Daten verwendet haben, ist es auch möglich, direkt von einer ASP.NET Seite aus auf Datenbankdaten 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. Für ausreichend große oder komplexe 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 äußerst einfacher, einmaliger Anwendungen unnötig sein.

ASP.NET 2.0 bietet fünf integrierte Datenquellensteuerelemente SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource und SiteMapDataSource. SqlDataSource kann verwendet werden, um direkt aus einer relationalen Datenbank auf Daten 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 erläutert, wie Sie mit dem SqlDataSource-Steuerelement arbeiten, wie Sie Datenbankdaten abfragen und filtern sowie sqlDataSource verwenden, um Daten einzufügen, zu aktualisieren und zu löschen.

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 einfach 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 und die Methoden zum Auswählen, Einfügen, Aktualisieren und Löschen von Daten aus dem zugrunde liegenden Objekttyp bereitstellt. Nachdem die ObjectDataSource-Eigenschaften konfiguriert wurden, kann ein Datenwebsteuerelement wie GridView, DetailsView oder DataList mithilfe der 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 jedoch für eine relationale Datenbank und nicht für eine Objektbibliothek. Mit SqlDataSource müssen wir die Datenbank Verbindungszeichenfolge und die ad-hoc SQL-Abfragen oder gespeicherten Prozeduren angeben, die zum Einfügen, Aktualisieren, Löschen und Abrufen von Daten ausgeführt werden sollen. Wenn die SqlDataSource-Methoden Select(), Insert(), Update()und Delete() aufgerufen werden, stellen sie eine Verbindung mit der angegebenen Datenbank her und stellen die entsprechende SQL-Abfrage aus. Wie im folgenden Diagramm veranschaulicht, führen diese Methoden die grunt-Arbeit aus, um eine Verbindung mit einer Datenbank herzustellen, eine Abfrage auszugeben 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 mit ASP.NET 2.0 vertraut sind, vermuten, dass das AccessDataSource-Steuerelement ausschließlich mit Microsoft Access mit dem SqlDataSource-Steuerelement funktioniert, das ausschließlich mit Microsoft SQL Server verwendet werden soll. Während AccessDataSource speziell für microsoft Access entwickelt wurde, 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, und viele andere.

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 uns mit der direkten Arbeit mit Datenbankdaten mithilfe des SqlDataSource-Steuerelements vertraut machen, 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. Fügen Sie zunächst einen neuen Ordner mit dem Namen hinzu SqlDataSource. Fügen Sie als Nächstes die folgenden ASP.NET Seiten zu diesem Ordner hinzu, und stellen Sie sicher, dass Sie jede Seite der Site.master master Seite zuordnen:

  • 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 Pages für die SqlDataSource-Related Tutorials

Wie in den anderen Ordnern Default.aspx listet der SqlDataSource Ordner die Tutorials in seinem Abschnitt auf. Denken Sie daran, dass das SectionLevelTutorialListing.ascx Benutzersteuerelement diese Funktionalität bereitstellt. Fügen Sie daher dieses Benutzersteuerelement zu Default.aspx hinzu, indem Sie es vom Projektmappen-Explorer in 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 den Hinzufügen von benutzerdefinierten Schaltflächen zu DataList und 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 nun 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 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 des SqlDataSource-Steuerelements zum Konfigurieren von Datenquellen angezeigt. 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 umfasst dies die Angabe der zugrunde liegenden Datenbank, die verwendet werden soll, und die Bereitstellung der ad-hoc-SQL-Anweisungen oder gespeicherten Prozeduren.

Im ersten Assistentenschritt 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 Daten 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 northwindConnectionString aus der liste der Drop-Down aus.

Abbildung 7: Auswählen von NORTHWINDConnectionString aus der Drop-Down Liste

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

Hinweis

Für dieses erste Beispiel verwenden wir die Option Spalten aus einer Tabelle oder Sicht 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 Sichten 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 in Abbildung 8 dargestellt, 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 Testabfrage wird die konfigurierte SELECT Anweisung ausgeführt und die Ergebnisse in einem Raster angezeigt.

Klicken Sie auf die Schaltfläche Testabfrage, 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 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 in etwa 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. Um auf einen Verbindungszeichenfolge-Wert in Web.config zu verweisen, verwenden Sie die Syntax <%$ expressionPrefix:expressionValue %>. In der Regel ist expressionPrefix ConnectionStrings und expressionValue 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 Übersicht über ASP.NET Ausdrücke .

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 sqlDataSource

Nachdem die SqlDataSource konfiguriert wurde, kann sie an ein Datenwebsteuerelement wie GridView oder DetailsView gebunden werden. In diesem Tutorial zeigen sie die Daten in einer GridView an. Ziehen Sie aus der Toolbox ein GridView-Objekt auf die Seite, und binden Sie es 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 an das SqlDataSource-Steuerelement (Klicken Sie hier, um ein Bild in voller Größe anzuzeigen)

Nachdem Sie das SqlDataSource-Steuerelement aus der Dropdownliste im Smarttag von GridView ausgewählt haben, fügt Visual Studio automatisch ein BoundField- oder CheckBoxField-Element zur GridView für jede der spalten hinzu, die vom Datenquellensteuerelement zurückgegeben werden. Da sqlDataSource drei Datenbankspalten ProductIDzurückgibt, ProductNameund UnitPrice 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 Produktname und die UnitPrice Felder in Price. Formatieren Sie das UnitPrice Feld auch als Währung. Nachdem Sie diese Änderungen vorgenommen haben, sollte Ihr deklaratives GridView-Markup in etwa 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 in Abbildung 11 dargestellt, listet GridView die Werte , ProductNameund UnitPrice jedes Produkt ProductIDauf.

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 ProductName, und UnitPrice (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

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

Die Built-In Datenwebsteuerelementfeatures und das SqlDataSource-Steuerelement

Im Allgemeinen sind die Features, die den Datenwebsteuerelementen zum Paging, Sortieren, Bearbeiten, Löschen, Einfügen usw. inhärent sind, spezifisch für das Datenwebsteuerelement und nicht vom verwendeten Datenquellensteuerelement abhängig. Das heißt, gridView kann sein integriertes Paging, Sortieren, Bearbeiten und Löschen verwenden, unabhängig davon, ob es an eine ObjectDataSource oder eine SqlDataSource gebunden ist. Bestimmte Datenwebsteuerelementfeatures sind jedoch vertraulich für das verwendete Datenquellensteuerelement oder für die Konfiguration der Datenquellensteuerung.

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 angezeigt werden. Dieses Modell ist beim Paging durch ausreichend große Resultsets in hohem Maße ineffizient. Glücklicherweise kann ObjectDataSource so konfiguriert werden, dass benutzerdefiniertes Paging unterstützt wird, das nur die genaue Teilmenge der anzuzeigenden Datensätze zurückgibt. Dem SqlDataSource-Steuerelement fehlen jedoch die Eigenschaften zum Implementieren benutzerdefinierter Pagings.

Eine weitere Subtilität beim Paging und Sortieren entsteht mit der SqlDataSource. Standardmäßig können die von einer SqlDataSource zurückgegebenen Daten ausgelagert oder durch GridView sortiert werden. Um dies zu veranschaulichen, aktivieren Sie die Optionen Paging aktivieren und Sortierung aktivieren im Smarttag von GridView, 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 Gesamtzahl der von der Abfrage zurückgegebenen Datensätze, die ein wesentlicher Aspekt für die Implementierung von Paging ist, kann anhand des DataSet ermittelt werden. Darüber hinaus können die DataSet-Ergebnisse über eine DataView sortiert werden. Diese Funktionen werden automatisch von SqlDataSource verwendet, wenn gridView ausgelagerte oder sortierte Daten anfordert.

Die 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, wenn die SqlDataSource-Ergebnisse an vorhandenen Code übergeben werden, der einen DataReader erwartet. Da DataReaders wesentlich einfachere Objekte als DataSets sind, bieten sie 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 das Auswählen 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, wodurch ein neues SqlDataSource-Steuerelement erstellt wird. Nennen Sie das Steuerelement ProductsWithCategoryInfoDataSource.

Erstellen eines neuen SqlDataSource-Steuerelements mit dem Namen 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 aus der Dropdownliste aus, und klicken Sie auf Weiter. Wählen Sie auf dem Bildschirm Select-Anweisung konfigurieren 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 angezeigt, 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 erfahren Sie, wie Sie eine benutzerdefinierte SQL-Anweisung eingeben. 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 folgende 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 Testabfrage 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 anzeigen und das folgende deklarative Markup ergeben:

<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 jedes Produkts an.

Abbildung 15: GridView zeigt die ID, den Namen und den Namen der zugeordneten Kategorie für jedes Produkt an (hier 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 wird erläutert, wie parametrisierte Abfragen erstellt und verwendet werden.

Viel Spaß beim Programmieren!

Weitere Informationen

Weitere Informationen zu den in diesem Tutorial behandelten 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 Hours. Er kann unter mitchell@4GuysFromRolla.comoder über seinen Blog erreicht werden, der unter http://ScottOnWriting.NETzu finden ist.

Besonderer 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 bevorstehenden MSDN-Artikel lesen? Wenn dies der Fall ist, legen Sie eine Zeile unter abmitchell@4GuysFromRolla.com.