Abfragen von Daten mit dem SqlDataSource-Steuerelement (VB)
von Scott Mitchell
In den vorherigen Lernprogrammen haben wir das ObjectDataSource-Steuerelement verwendet, um die Präsentationsebene vollständig von der Datenzugriffsebene zu trennen. Ab diesem Lernprogramm erfahren Sie, wie das SqlDataSource-Steuerelement für einfache Anwendungen verwendet werden kann, die keine so strenge Trennung von Präsentation und Datenzugriff erfordern.
Einführung
Alle lernprogramme, die wir bisher untersucht haben, haben eine gestaffelte Architektur verwendet, die aus Präsentations-, Geschäftslogik- und Datenzugriffsebenen besteht. Die Datenzugriffsebene (DATA Access Layer, DAL) wurde im ersten Lernprogramm (Erstellen einer Datenzugriffsschicht) und der Geschäftslogikebene im zweiten (Erstellen einer Geschäftslogikebene) erstellt. Beginnend mit dem Lernprogramm zum Anzeigen von Daten mit objectDataSource haben wir gesehen, wie sie ASP.NET 2.0 s neues ObjectDataSource-Steuerelement verwenden, um deklarativ mit der Architektur aus der Präsentationsebene zu verbinden.
Während alle Lernprogramme bisher 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, einzufügen, zu aktualisieren und zu löschen, um die Architektur zu umgehen. Dadurch werden die spezifischen Datenbankabfragen und Geschäftslogik direkt auf der Webseite platziert. Für ausreichend große oder komplexe Anwendungen ist das Entwerfen, Implementieren und Verwenden einer gestaffelten Architektur für den Erfolg, die Updataability und die Aufrechterhaltung der Anwendung von entscheidender Bedeutung. Die Entwicklung einer robusten Architektur kann jedoch beim Erstellen von sehr einfachen, einmaligen Anwendungen unnötig sein.
ASP.NET 2.0 bietet fünf integrierte Datenquellensteuerelemente sqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource und SiteMapDataSource. Die 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 Lernprogramm und den nächsten drei Werden wir untersuchen, wie Sie mit dem SqlDataSource-Steuerelement arbeiten, wie Datenbankdaten abfragen und filtern sowie wie Sie die SqlDataSource zum Einfügen, Aktualisieren und Löschen von Daten verwenden.
Abbildung 1: ASP.NET 2.0 enthält fünf integrierte Datenquellensteuerelemente
Vergleich der ObjectDataSource und SqlDataSource
Konzeptionell sind sowohl die ObjectDataSource- als auch die SqlDataSource-Steuerelemente einfach Proxys für Daten. Wie im Lernprogramm zum Anzeigen von Daten mit objectDataSource erläutert, weist objectDataSource Eigenschaften auf, 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 an das Steuerelement gebunden werden, indem die ObjectDataSource s Select()
, Insert()
, Delete()
, und Update()
Methoden für die Interaktion mit der zugrunde liegenden Architektur verwendet werden.
Die SqlDataSource bietet die gleiche Funktionalität, funktioniert jedoch nicht für eine Objektbibliothek, sondern für eine relationale Datenbank. 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. Die SqlDataSource s Select()
, Insert()
, , Update()
und Delete()
Methoden, wenn aufgerufen, stellen Sie eine Verbindung mit der angegebenen Datenbank her, und geben Sie die entsprechende SQL-Abfrage aus. Wie im folgenden Diagramm dargestellt, führen diese Methoden die gruntige Arbeit aus, eine Verbindung mit einer Datenbank herzustellen, eine Abfrage auszugeben und die Ergebnisse zurückzugeben.
Abbildung 2: Die SqlDataSource dient als Proxy für die Datenbank.
Hinweis
In diesem Lernprogramm konzentrieren wir uns auf das Abrufen von Daten aus der Datenbank. Im Lernprogramm zum Einfügen, Aktualisieren und Löschen von Daten mit dem SqlDataSource-Steuerelement erfahren Sie, wie Sie die SqlDataSource so konfigurieren, dass das Einfügen, Aktualisieren und Löschen unterstützt wird.
Die SqlDataSource- und AccessDataSource-Steuerelemente
Zusätzlich zum SqlDataSource-Steuerelement enthält ASP.NET 2.0 auch ein AccessDataSource-Steuerelement. Diese beiden verschiedenen Steuerelemente führen viele Entwickler neu zu ASP.NET 2.0, um zu vermuten, dass das AccessDataSource-Steuerelement ausschließlich mit Microsoft Access mit dem SqlDataSource-Steuerelement funktioniert, das ausschließlich mit Microsoft SQL Server funktioniert. 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. Dazu gehören alle oleDb- oder ODBC-kompatiblen Datenspeicher, z. B. Microsoft SQL Server, Microsoft Access, Oracle, Informix, MySQL und PostgreSQL, unter anderem.
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 erfordert dagegen 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 Lernprogramm 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
Gestaltungsvorlage zugeordnet wird:
Default.aspx
Querying.aspx
ParameterizedQueries.aspx
InsertUpdateDelete.aspx
OptimisticConcurrency.aspx
Abbildung 3: Hinzufügen der ASP.NET Seiten für sqlDataSource-bezogene Lernprogramme
Wie in den anderen Ordnern Default.aspx
werden im SqlDataSource
Ordner die Lernprogramme im zugehörigen Abschnitt aufgelistet. Erinnern Sie sich daran, dass das SectionLevelTutorialListing.ascx
Benutzersteuerelement diese Funktionalität bereitstellt. Fügen Sie daher dieses Benutzersteuerelement Default.aspx
hinzu, indem Sie es aus der Projektmappen-Explorer in die Entwurfsansicht der Seite ziehen.
Abbildung 4: Hinzufügen des SectionLevelTutorialListing.ascx
Benutzersteuerelements zu Default.aspx
(Klicken, um das Bild in voller Größe anzuzeigen)
Fügen Sie diese vier Seiten schließlich als Einträge zur Web.sitemap
Datei hinzu. Fügen Sie insbesondere das folgende Markup nach dem Hinzufügen von benutzerdefinierten Schaltflächen zur 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 Lernprogramme-Website über einen Browser anzuzeigen. Das Menü auf der linken Seite enthält jetzt Elemente für die Bearbeitung, das Einfügen und Löschen von Lernprogrammen.
Abbildung 5: Die Websiteübersicht enthält jetzt Einträge für die SqlDataSource-Lernprogramme.
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 den Designer, und legen Sie es ID
auf .ProductsDataSource
Wie bei objectDataSource erzeugt die SqlDataSource keine gerenderte Ausgabe und wird daher als graues Feld auf der Entwurfsoberfläche angezeigt. Um die SqlDataSource zu konfigurieren, klicken Sie im Smarttag von SqlDataSource auf den Link "Datenquelle konfigurieren".
Abbildung 6: Klicken Sie auf den Link "Datenquelle konfigurieren" aus dem Smarttag "SqlDataSource"
Dadurch wird der SqlDataSource-Steuerelement-Assistent zum Konfigurieren der Datenquelle angezeigt. Während 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 bedeutet dies die Angabe der zugrunde liegenden Datenbank zur Verwendung und Bereitstellung der ad-hoc SQL-Anweisungen oder gespeicherten Prozeduren.
Der erste Schritt des Assistenten fordert uns zur Eingabe der Datenbank auf. Die Dropdownliste enthält die Datenbanken im Ordner der Webanwendung App_Data
und diejenigen, die dem Knoten "Datenverbindungen" im Server-Explorer hinzugefügt wurden. Da wir bereits eine Verbindungszeichenfolge für die NORTHWIND.MDF
Datenbank im Ordner zur App_Data
Projektdatei Web.config
hinzugefügt haben, enthält die Dropdownliste einen Verweis auf dieses Verbindungszeichenfolge. NORTHWINDConnectionString
Wählen Sie dieses Element aus der Dropdownliste aus, und klicken Sie auf "Weiter".
Abbildung 7: Auswählen der NORTHWINDConnectionString
Option aus der Dropdownliste
Nach der Auswahl der Datenbank 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 Auswahl über die Option "Angeben einer benutzerdefinierten SQL-Anweisung oder gespeicherten Prozedur" umschalten und Spalten aus einer Tabelle oder Ansichtsschaltflächen angeben.
Hinweis
Lassen Sie uns in diesem ersten Beispiel die Option "Spalten aus einer Tabelle oder Ansicht angeben" verwenden. Später in diesem Lernprogramm kehren wir zum Assistenten zurück und erkunden die Option "Benutzerdefinierte SQL-Anweisung oder gespeicherte Prozedur angeben".
Abbildung 8 zeigt den Bildschirm "Select-Anweisung konfigurieren", wenn das Optionsfeld "Spalten aus einer Tabelle oder Ansicht angeben" ausgewählt ist. Die Dropdownliste enthält den Satz von Tabellen und Ansichten in der Northwind-Datenbank, wobei die ausgewählten Tabellen- oder Ansichtsspalten in der nachstehenden Kontrollkästchenliste angezeigt werden. In diesem Beispiel geben wir die Spalten ProductName
, und UnitPrice
die ProductID
Spalten 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 er die ProductID
Spalten ProductName
und UnitPrice
Die Spalten aus der Products
Tabelle zurückgibt, 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.
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 Assistent von SqlDataSource lediglich den Eigenschaften des Steuerelements Werte zu, nämlich den Eigenschaften und ConnectionString
SelectCommand
Eigenschaften des Steuerelements. 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 eine Verbindungszeichenfolge verweisen.Web.config
Verwenden Sie die Syntax<%$ expressionPrefix:expressionValue %>
, um auf einen Verbindungszeichenfolge Wert in "Web.config" zu verweisen. "expressionPrefix" ist in der Regel "ConnectionStrings" und "expressionValue" der Name der Verbindungszeichenfolge im<connectionStrings>
Web.config
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 gebunden werden, z. B. gridView oder DetailsView. In diesem Lernprogramm zeigen wir die Daten in einer GridView an. Ziehen Sie aus der Toolbox ein GridView-Steuerelement auf das Zeichenblatt, und binden Sie es an ProductsDataSource
die 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 das 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-Steuerelement für jede der spalten hinzu, die vom Datenquellensteuerelement zurückgegeben werden. Da sqlDataSource drei Datenbankspalten ProductID
zurückgibt, ProductName
und UnitPrice
es gibt drei Felder in gridView.
Nehmen Sie sich einen Moment Zeit, um die drei BoundFields von GridView zu konfigurieren. Ändern Sie die ProductName
Feldeigenschaft HeaderText
in "Produktname" und das UnitPrice
Feld "Preis". 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 in Abbildung 11 dargestellt, werden in gridView die einzelnen Produkte ProductID
und ProductName
UnitPrice
Werte aufgelistet.
Abbildung 11: In der GridView werden die einzelnen Produkte und UnitPrice
Werte angezeigt (Zum Anzeigen des Bilds ProductID
ProductName
mit voller Größe klicken)
Wenn die Seite besucht wird, ruft GridView die Methode des Datenquellensteuerelements Select()
auf. Wenn wir das ObjectDataSource-Steuerelement verwendet haben, hat dies die ProductsBLL
Klasse s-Methode GetProducts()
aufgerufen. Mit sqlDataSource stellt die Select()
Methode jedoch eine Verbindung mit der angegebenen Datenbank her und gibt die SelectCommand
(SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]
in diesem Beispiel) aus. Die SqlDataSource gibt die Ergebnisse zurück, die das GridView dann aufzählt und eine Zeile in der GridView für jeden zurückgegebenen Datenbankdatensatz erstellt.
Die integrierten Datenwebsteuerelementfeatures und das SqlDataSource-Steuerelement
Im Allgemeinen sind die Features, die der Seitenverwaltung, Sortierung, Bearbeitung, Löschung, Einfügen usw. von Datenwebsteuerelementen inhärent sind und nicht von dem verwendeten Datenquellensteuerelement abhängig sind. Das heißt, das GridView kann seine integrierte Auslagerung, Sortierung, Bearbeitung und Löschung nutzen, unabhängig davon, ob es an eine ObjectDataSource oder eine SqlDataSource gebunden ist. Bestimmte Datenwebsteuerelementfeatures sind jedoch für das verwendete Datenquellensteuerelement oder für die Konfiguration des Datenquellensteuerelements vertraulich.
Im Lernprogramm "Effizientes Paging durch große Datenmengen" haben wir beispielsweise erläutert, wie standardmäßig die Auslagerungslogik für die Datenwebsteuerelemente alle Datensätze aus der zugrunde liegenden Datenquelle naiv zurückgibt und dann nur die entsprechende Teilmenge von Datensätzen anzeigt, die dem aktuellen Seitenindex und der Anzahl der anzuzeigenden Datensätze pro Seite zugeordnet sind. Dieses Modell ist sehr ineffizient, wenn das Paging durch ausreichend große Resultsets erfolgt. Glücklicherweise kann objectDataSource so konfiguriert werden, dass benutzerdefinierte Paging unterstützt wird, was nur die genaue Teilmenge der anzuzeigenden Datensätze zurückgibt. Das SqlDataSource-Steuerelement fehlt jedoch an den Eigenschaften für die Implementierung benutzerdefinierter Pagings.
Eine weitere Subtilität mit Paging und Sortierung entsteht mit der SqlDataSource. Standardmäßig können die aus einer SqlDataSource zurückgegebenen Daten über das GridView-Objekt ausgelagert oder sortiert werden. Um dies zu veranschaulichen, überprüfen Sie die Optionen "Paging aktivieren" und "Sortieroptionen aktivieren" im Smarttag Querying.aspx
von GridView, und stellen Sie sicher, dass dies wie erwartet funktioniert.
Das Sortieren und Paging funktioniert, da die SqlDataSource die Datenbankdaten in einem lose typierten DataSet abruft. Die Gesamtzahl der von der Abfrage zurückgegebenen Datensätze, die für die Implementierung von Paging von wesentlicher Bedeutung sind, können aus dem 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 seitenseitige oder sortierte Daten anfordert.
Die SqlDataSource kann so konfiguriert werden, dass anstelle eines DataSets ein DataReader zurückgegeben wird, indem seine 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 deutlich einfachere Objekte als DataSets sind, bieten sie eine bessere Leistung. Wenn Sie diese Änderung vornehmen, kann das Datenwebsteuerelement jedoch weder sortieren noch seitenweise sortieren, da die SqlDataSource nicht feststellen kann, wie viele Datensätze von der Abfrage zurückgegeben werden, noch bietet 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 einer von zwei Ansätzen als benutzerdefinierte SQL-Anweisung oder gespeicherte Prozedur oder als Spalten aus einer vorhandenen Tabelle oder Ansicht 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, damit ein neues SqlDataSource-Steuerelement erstellt wird. Benennen Sie das Steuerelement ProductsWithCategoryInfoDataSource
.
Abbildung 12: Erstellen eines neuen SqlDataSource-Steuerelements mit dem Namen ProductsWithCategoryInfoDataSource
Der nächste Bildschirm fordert uns auf, die Datenbank anzugeben. Wie in Abbildung 7 gezeigt, wählen Sie in der Dropdownliste die NORTHWINDConnectionString
Option aus, und klicken Sie auf "Weiter". Wählen Sie im 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 definieren" oder "Gespeicherte Prozeduren" angezeigt, der Registerkarten "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 Lernprogramm befassen wir uns mit der Eingabe einer benutzerdefinierten SQL-Anweisung. Das nächste Lernprogramm 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 im Abfrage-Generator oder im Textfeld die folgende Abfrage, um die ProductID
Felder ProductName
und Felder aus der Products
Tabelle zurückzugeben, indem Sie ein JOIN
Element aus der Tabelle verwenden, um die Produktelemente 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
Klicken Sie nach dem Angeben der Abfrage auf "Weiter", um mit dem Bildschirm "Testabfrage" fortzufahren. Klicken Sie auf "Fertig stellen", um den SqlDataSource-Assistenten abzuschließen.
Nach Abschluss des Assistenten wird der GridView drei BoundFields hinzugefügt, die die ProductID
von ProductName
der Abfrage zurückgegebenen Spalten CategoryName
und 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>
Abbildung 15: In der GridView werden jede Produkt-ID, der Name und der zugeordnete Kategoriename angezeigt (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Zusammenfassung
In diesem Lernprogramm haben wir erfahren, wie Sie Daten mithilfe des SqlDataSource-Steuerelements abfragen und anzeigen. Wie die ObjectDataSource dient die SqlDataSource als Proxy und stellt einen deklarativen Ansatz für den Zugriff auf Daten bereit. Die Eigenschaften geben die Datenbank an, mit der eine Verbindung hergestellt werden soll, und die auszuführende SQL-AbfrageSELECT
. Sie können über die Eigenschaftenfenster oder mithilfe des Assistenten zum Konfigurieren von Datenquellen angegeben werden.
Die SELECT
in diesem Lernprogramm untersuchten Abfragebeispiele 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 werden oder automatisch aus einer angegebenen Quelle abgerufen werden. Im nächsten Lernprogramm werden wir untersuchen, wie parametrisierte Abfragen erstellt und verwendet werden.
Glückliche Programmierung!
Weitere nützliche Informationen
Weitere Informationen zu den in diesem Lernprogramm erläuterten Themen finden Sie in den folgenden Ressourcen:
- Übersicht über das SqlDataSource-Steuerelement
- ASP.NET Schnellstartlernprogramme: Das SqlDataSource-Steuerelement
- 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 Web Technologies zusammen. Scott arbeitet als unabhängiger Berater, Trainer und Schriftsteller. Sein neuestes Buch ist Sams Teach Yourself ASP.NET 2.0 in 24 Stunden. Er kann über mitchell@4GuysFromRolla.com seinen Blog erreicht werden, der unter .http://ScottOnWriting.NET
Besonderer Dank an
Diese Lernprogrammreihe wurde von vielen hilfreichen Prüfern überprüft. Leitende Prüfer für dieses Lernprogramm waren Susan Connery, Bernadette Leigh und David Suru. Möchten Sie meine bevorstehenden MSDN-Artikel überprüfen? Wenn dies der Fall ist, legen Sie mir eine Zeile bei mitchell@4GuysFromRolla.com.