Abfragen von Daten mit dem SqlDataSource-Steuerelement (VB)
von Scott Mitchell
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.
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.
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
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.
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.sitemap
einen 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.
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.
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.
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 ProductID
Spalten , ProductName
und 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.
Abbildung 8: Zurückgeben von Daten aus der Products
Tabelle
Nachdem Sie den Assistenten so konfiguriert haben, dass die ProductID
Spalten , ProductName
und 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.
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.config
verweisen. 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.
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 ProductID
zurückgibt, ProductName
und 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 , ProductName
und UnitPrice
jedes Produkt ProductID
auf.
Abbildung 11: Die GridView zeigt die Werte für jedes Produkt ProductID
an 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 DataReader
geä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
.
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.
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
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 ProductID
Abfrage zurückgegebenen Spalten , ProductName
und 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>
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:
- Übersicht über das SqlDataSource-Steuerelement
- ASP.NET Schnellstarttutorials: Das SqlDataSource-Steuerelement
- Das Web.config-Element
<connectionStrings>
- Datenbankverbindungszeichenfolgenreferenz
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für