Wykonywanie zapytań o dane przy użyciu kontrolki SqlDataSource (C#)
Autor: Scott Mitchell
W poprzednich samouczkach użyliśmy kontrolki ObjectDataSource, aby całkowicie oddzielić warstwę prezentacji od warstwy dostępu do danych. Począwszy od tego samouczka, dowiesz się, jak można użyć kontrolki SqlDataSource dla prostych aplikacji, które nie wymagają takiego ścisłego rozdzielenia prezentacji i dostępu do danych.
Wprowadzenie
Wszystkie samouczki, które omówiliśmy do tej pory, używały architektury warstwowej składającej się z warstw prezentacji, logiki biznesowej i dostępu do danych. Warstwa dostępu do danych (DAL) została utworzona w pierwszym samouczku (Tworzenie warstwy dostępu do danych) i warstwie logiki biznesowej w drugim (Tworzenie warstwy logiki biznesowej). Począwszy od samouczka Wyświetlanie danych za pomocą obiektu ObjectDataSource, zobaczyliśmy, jak używać nowej kontrolki ObjectDataSource ASP.NET 2.0 do deklaratywnego interfejsu z architekturą z warstwy prezentacji.
Mimo że wszystkie samouczki do tej pory korzystały z architektury do pracy z danymi, można również uzyskiwać dostęp do danych, wstawiać, aktualizować i usuwać dane bazy danych bezpośrednio ze strony ASP.NET, pomijając architekturę. Spowoduje to umieszczenie określonych zapytań bazy danych i logiki biznesowej bezpośrednio na stronie internetowej. W przypadku wystarczająco dużych lub złożonych aplikacji projektowanie, implementowanie i używanie architektury warstwowej jest niezwykle ważne dla powodzenia, skalowalności i możliwości utrzymania aplikacji. Jednak tworzenie niezawodnej architektury może być niepotrzebne podczas tworzenia niezwykle prostych, jednorazowych aplikacji.
ASP.NET 2.0 udostępnia pięć wbudowanych kontrolek źródła danych SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource i SiteMapDataSource. Za pomocą usługi SqlDataSource można uzyskiwać dostęp do danych i modyfikować je bezpośrednio z relacyjnej bazy danych, w tym programu Microsoft SQL Server, Microsoft Access, Oracle, MySQL i innych. W tym samouczku i kolejnych trzech omówimy sposób pracy z kontrolką SqlDataSource, eksplorując sposób wykonywania zapytań i filtrowania danych bazy danych, a także sposobu używania usługi SqlDataSource do wstawiania, aktualizowania i usuwania danych.
Rysunek 1. ASP.NET 2.0 zawiera pięć wbudowanych kontrolek źródła danych
Porównywanie obiektów ObjectDataSource i SqlDataSource
Koncepcyjnie zarówno kontrolki ObjectDataSource, jak i SqlDataSource są po prostu serwerami proxy do danych. Zgodnie z opisem w samouczku Wyświetlanie danych za pomocą obiektu ObjectDataSource obiekt ObjectDataSource zawiera właściwości wskazujące typ obiektu, który dostarcza dane oraz metody wywoływania w celu wybrania, wstawienia, zaktualizowania i usunięcia danych z bazowego typu obiektu. Po skonfigurowaniu właściwości obiektu ObjectDataSource kontrolka sieci Web danych, taka jak GridView, DetailsView lub DataList, może być powiązana z kontrolką przy użyciu metod ObjectDataSource s Select()
, Insert()
Delete()
i Update()
w celu interakcji z podstawową architekturą.
Źródło SqlDataSource udostępnia te same funkcje, ale działa względem relacyjnej bazy danych, a nie biblioteki obiektów. W usłudze SqlDataSource musimy określić bazę danych parametry połączenia oraz zapytania ad hoc SQL lub procedury składowane, które będą wykonywane w celu wstawiania, aktualizowania, usuwania i pobierania danych. Metody sqlDataSource s Select()
, Insert()
Update()
, iDelete()
, po wywołaniu, łączą się z określoną bazą danych i wystawiają odpowiednie zapytanie SQL. Jak pokazano na poniższym diagramie, te metody wykonują grunt pracy łączenia się z bazą danych, wystawiania zapytania i zwracania wyników.
Rysunek 2. Źródło SqlDataSource służy jako serwer proxy bazy danych
Uwaga
W tym samouczku skoncentrujemy się na pobieraniu danych z bazy danych. W samouczku Wstawianie, aktualizowanie i usuwanie danych za pomocą kontrolki SqlDataSource zobaczymy, jak skonfigurować usługę SqlDataSource w celu obsługi wstawiania, aktualizowania i usuwania.
Kontrolki SqlDataSource i AccessDataSource
Oprócz kontrolki SqlDataSource ASP.NET 2.0 zawiera również kontrolkę AccessDataSource. Te dwie różne kontrolki prowadzą wielu deweloperów do ASP.NET 2.0, aby podejrzewać, że kontrolka AccessDataSource została zaprojektowana do pracy wyłącznie z programem Microsoft Access za pomocą kontrolki SqlDataSource przeznaczonej do pracy wyłącznie z programem Microsoft SQL Server. Mimo że źródło AccessDataSource jest przeznaczone do pracy z programem Microsoft Access, kontrolka SqlDataSource współpracuje z dowolną relacyjną bazą danych, do których można uzyskać dostęp za pośrednictwem platformy .NET. Obejmuje to między innymi wszystkie magazyny danych zgodne z rozwiązaniem OleDb lub ODBC, takie jak Microsoft SQL Server, Microsoft Access, Oracle, Informix, MySQL i PostgreSQL.
Jedyną różnicą między kontrolkami AccessDataSource i SqlDataSource jest sposób określenia informacji o połączeniu z bazą danych. Kontrolka AccessDataSource wymaga tylko ścieżki pliku do pliku bazy danych programu Access. Z drugiej strony usługa SqlDataSource wymaga kompletnego parametry połączenia.
Krok 1. Tworzenie stron sieci Web SqlDataSource
Zanim zaczniemy badać sposób pracy bezpośrednio z danymi bazy danych przy użyciu kontrolki SqlDataSource, najpierw pośmińmy chwilę na utworzenie stron ASP.NET w naszym projekcie witryny internetowej, które będą potrzebne w tym samouczku i w następnych trzech. Zacznij od dodania nowego folderu o nazwie SqlDataSource
. Następnie dodaj następujące strony ASP.NET do tego folderu, aby skojarzyć każdą stronę ze stroną wzorcową Site.master
:
Default.aspx
Querying.aspx
ParameterizedQueries.aspx
InsertUpdateDelete.aspx
OptimisticConcurrency.aspx
Rysunek 3. Dodawanie stron ASP.NET dla samouczków związanych z usługą SqlDataSource
Podobnie jak w innych folderach, Default.aspx
w SqlDataSource
folderze zostanie wyświetlona lista samouczków w jego sekcji. Pamiętaj, że kontrolka SectionLevelTutorialListing.ascx
użytkownika udostępnia tę funkcję. W związku z tym dodaj tę kontrolkę Default.aspx
użytkownika, przeciągając ją z Eksplorator rozwiązań na stronę Widok projektu.
Rysunek 4. Dodawanie kontrolki SectionLevelTutorialListing.ascx
użytkownika do Default.aspx
(kliknij, aby wyświetlić obraz o pełnym rozmiarze)
Na koniec dodaj te cztery strony jako wpisy do Web.sitemap
pliku. W szczególności dodaj następujący znacznik po dodaniu przycisków niestandardowych do listy DataList i repeater <siteMapNode>
:
<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>
Po zaktualizowaniu Web.sitemap
programu pośmiń chwilę, aby wyświetlić witrynę internetową samouczków za pośrednictwem przeglądarki. Menu po lewej stronie zawiera teraz elementy do edycji, wstawiania i usuwania samouczków.
Rysunek 5. Mapa witryny zawiera teraz wpisy dla samouczków sqlDataSource
Krok 2. Dodawanie i konfigurowanie kontrolki SqlDataSource
Zacznij od otwarcia Querying.aspx
strony w folderze SqlDataSource
i przełącz się do widoku Projektu. Przeciągnij kontrolkę SqlDataSource z przybornika do projektanta i ustaw ją ID
na ProductsDataSource
. Podobnie jak w przypadku obiektu ObjectDataSource, źródło SqlDataSource nie generuje żadnych renderowanych danych wyjściowych i dlatego jest wyświetlane jako szare pole na powierzchni projektowej. Aby skonfigurować źródło danych SqlDataSource, kliknij link Konfiguruj źródło danych z tagu inteligentnego sqlDataSource.
Rysunek 6. Kliknij link Konfiguruj źródło danych z tagu inteligentnego sqlDataSource
Spowoduje to wyświetlenie kreatora konfigurowania źródła danych kontrolki SqlDataSource. Chociaż kroki kreatora różnią się od kontrolek ObjectDataSource, cel końcowy jest taki sam, aby podać szczegółowe informacje na temat pobierania, wstawiania, aktualizowania i usuwania danych za pośrednictwem źródła danych. W przypadku usługi SqlDataSource oznacza to określenie bazowej bazy danych do użycia i podanie instrukcji SQL ad hoc lub procedur składowanych.
Pierwszy krok kreatora monituje nas o bazę danych. Lista rozwijana zawiera te bazy danych znajdujące się w folderze aplikacji App_Data
internetowej oraz te, które zostały dodane do węzła Połączenia danych w Eksploratorze serwera. Ponieważ dodaliśmy już parametry połączenia dla NORTHWIND.MDF
bazy danych w App_Data
folderze do pliku projektuWeb.config
, lista rozwijana zawiera odwołanie do tej parametry połączenia, NORTHWINDConnectionString
. Wybierz ten element z listy rozwijanej, a następnie kliknij przycisk Dalej.
Rysunek 7. Wybieranie elementu NORTHWINDConnectionString
z listy rozwijanej
Po wybraniu bazy danych kreator prosi o zwrócenie danych przez zapytanie. Możemy określić kolumny tabeli lub widoku, które mają być zwracane, albo wprowadzić niestandardową instrukcję SQL lub określić procedurę składowaną. Można przełączać się między tym wyborem za pomocą instrukcji Określ niestandardową instrukcję SQL lub procedurę składowaną i Określ kolumny z tabeli lub przycisków radiowych widoku.
Uwaga
W tym pierwszym przykładzie użyjmy opcji Określ kolumny z tabeli lub widoku. Wrócimy do kreatora w dalszej części tego samouczka i zapoznamy się z opcją Określ niestandardową instrukcję SQL lub procedurę składowaną.
Rysunek 8 przedstawia ekran Konfigurowanie instrukcji Select po wybraniu przycisku radiowego Określanie kolumn z tabeli lub widoku. Lista rozwijana zawiera zestaw tabel i widoków w bazie danych Northwind z wybraną tabelą lub kolumnami widoku wyświetlanymi na poniższej liście pól wyboru. W tym przykładzie zwróćmy kolumny ProductID
, ProductName
i UnitPrice
z Products
tabeli . Jak pokazano na rysunku 8, po wybraniu tych opcji kreator wyświetli wynikowej instrukcji SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]
SQL .
Rysunek 8. Zwracanie danych z Products
tabeli
Po skonfigurowaniu kreatora w celu zwrócenia ProductID
kolumn , ProductName
i UnitPrice
z Products
tabeli kliknij przycisk Dalej. Ten ostatni ekran umożliwia sprawdzenie wyników zapytania skonfigurowanego w poprzednim kroku. Kliknięcie przycisku Test Query powoduje wykonanie skonfigurowanej SELECT
instrukcji i wyświetlenie wyników w siatce.
Rysunek 9. Kliknij przycisk Testuj zapytanie, aby przejrzeć SELECT
zapytanie
Aby ukończyć pracę kreatora, kliknij przycisk Zakończ.
Podobnie jak w przypadku obiektu ObjectDataSource, kreator sqlDataSource tylko przypisuje wartości do właściwości kontrolki, a mianowicie ConnectionString
właściwości i SelectCommand
. Po ukończeniu pracy kreatora znacznik deklaratywne kontrolki SqlDataSource powinien wyglądać podobnie do następującego:
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]">
</asp:SqlDataSource>
Właściwość ConnectionString
zawiera informacje na temat nawiązywania połączenia z bazą danych. Tę właściwość można przypisać do pełnej, zakodowanej parametry połączenia wartości lub wskazać parametry połączenia w pliku Web.config
. Aby odwołać się do wartości parametry połączenia w pliku Web.config, użyj składni <%$ expressionPrefix:expressionValue %>
. Zazwyczaj wyrażeniePrefix to ConnectionStrings, a expressionValue to nazwa parametrów połączenia w<connectionStrings>
Web.config
sekcji . Składnia może jednak służyć do odwołwania <appSettings>
się do elementów lub zawartości z plików zasobów. Aby uzyskać więcej informacji na temat tej składni, zobacz ASP.NET Expressions Overview (Omówienie wyrażeń ASP.NET).
Właściwość SelectCommand
określa instrukcję ad hoc SQL lub procedurę składowaną do wykonania w celu zwrócenia danych.
Krok 3. Dodawanie kontrolki sieci Web danych i wiązanie jej z usługą SqlDataSource
Po skonfigurowaniu elementu SqlDataSource można go powiązać z kontrolką sieci Web danych, taką jak GridView lub DetailsView. Na potrzeby tego samouczka wyświetlmy dane w elementy GridView. Z przybornika przeciągnij kontrolkę GridView na stronę i powiąż ją ProductsDataSource
z usługą SqlDataSource, wybierając źródło danych z listy rozwijanej w tagu inteligentnym GridView.
Rysunek 10. Dodawanie kontrolki GridView i wiązanie jej z kontrolką SqlDataSource (kliknij, aby wyświetlić obraz o pełnym rozmiarze)
Po wybraniu kontrolki SqlDataSource z listy rozwijanej w tagu inteligentnym GridView program Visual Studio automatycznie doda pole BoundField lub CheckBoxField do kontrolki GridView dla każdej kolumny zwróconej przez kontrolkę źródła danych. Ponieważ element SqlDataSource zwraca trzy kolumny ProductID
bazy danych , ProductName
i UnitPrice
istnieją trzy pola w elementy GridView.
Poświęć chwilę, aby skonfigurować trzy pola BoundFields obiektu GridView. Zmień właściwość pola HeaderText
na ProductName
Product Name (Nazwa produktu) i UnitPrice
pole na Price (Cena). Sformatuj UnitPrice
również pole jako walutę. Po wprowadzeniu tych modyfikacji znacznik deklaratywny gridView powinien wyglądać podobnie do następującego:
<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>
Odwiedź tę stronę za pośrednictwem przeglądarki. Jak pokazano na rysunku 11, kontrolka GridView wyświetla listę poszczególnych produktów s ProductID
, ProductName
i UnitPrice
wartości.
Rysunek 11. Kontrolka GridView wyświetla każdy produkt , ProductName
ProductID
i UnitPrice
wartości (kliknij, aby wyświetlić obraz pełnowymiarowy)
Gdy strona zostanie odwiedzona, kontrolka GridView wywołuje metodę kontroli Select()
źródła danych. Kiedy używaliśmy kontrolki ObjectDataSource, ta nazwała metodę ProductsBLL
klasy s GetProducts()
. Jednak w przypadku usługi SqlDataSource Select()
metoda ustanawia połączenie z określoną bazą danych i wystawia SelectCommand
metodę (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]
w tym przykładzie). Funkcja SqlDataSource zwraca wyniki, które następnie funkcja GridView wylicza, tworząc wiersz w liczbie GridView dla każdego zwróconego rekordu bazy danych.
Wbudowane funkcje kontrolki sieci Web danych i kontrolka SqlDataSource
Ogólnie rzecz biorąc, funkcje związane z stronicowaniem, sortowaniem, edytowaniem, usuwaniem, wstawianiem i tak dalej są specyficzne dla kontrolki sieci Web danych i nie są zależne od używanej kontroli źródła danych. Oznacza to, że element GridView może korzystać z wbudowanego stronicowania, sortowania, edytowania i usuwania, niezależnie od tego, czy jest on powiązany z obiektem ObjectDataSource, czy z usługą SqlDataSource. Jednak niektóre funkcje kontroli sieci Web danych są wrażliwe na używaną kontrolę źródła danych lub konfigurację kontroli źródła danych.
Na przykład w samouczku Efektywne stronicowanie za pomocą dużych ilości danych omówiliśmy, w jaki sposób domyślnie logika stronicowania dla kontrolek sieci Web danych naiwnie zwraca wszystkie rekordy z bazowego źródła danych, a następnie wyświetla tylko odpowiedni podzestaw rekordów, biorąc pod uwagę bieżący indeks strony i liczbę rekordów do wyświetlenia na stronę. Ten model jest bardzo nieefektywny podczas stronicowania za pośrednictwem wystarczająco dużych zestawów wyników. Na szczęście obiekt ObjectDataSource można skonfigurować tak, aby obsługiwał niestandardowe stronicowanie, co zwraca tylko dokładny podzbiór rekordów do wyświetlenia. Kontrolka SqlDataSource nie ma jednak właściwości implementowania niestandardowego stronicowania.
Kolejną subtelnością stronicowania i sortowania jest użycie elementu SqlDataSource. Domyślnie dane zwrócone z usługi SqlDataSource można stronicować lub sortować za pomocą kontrolki GridView. Aby to zademonstrować, sprawdź opcje Włącz stronicowanie i Włącz sortowanie w tagu inteligentnym GridView w programie Querying.aspx
i sprawdź, czy działa to zgodnie z oczekiwaniami.
Sortowanie i stronicowanie działa, ponieważ źródło SqlDataSource pobiera dane bazy danych do luźno typizowanego zestawu danych. Łączna liczba rekordów zwracanych przez zapytanie stanowi podstawowy aspekt implementowania stronicowania, który można ustalić z zestawu danych. Ponadto wyniki zestawu danych można sortować za pomocą elementu DataView. Te funkcje są automatycznie używane przez usługę SqlDataSource, gdy obiekt GridView żąda stronicowania lub sortowania danych.
Element SqlDataSource można skonfigurować tak, aby zwracał element DataReader zamiast elementu DataSet, zmieniając jego DataSourceMode
właściwość z DataSet
(wartość domyślna) na DataReader
. Użycie elementu DataReader może być preferowane w sytuacjach podczas przekazywania wyników elementu SqlDataSource do istniejącego kodu, który oczekuje elementu DataReader. Ponadto, ponieważ obiekty DataReaders są znacznie prostsze niż Zestawy danych, oferują lepszą wydajność. Jeśli jednak wprowadzisz tę zmianę, kontrolka sieci Web danych nie może sortować ani stronicować, ponieważ usługa SqlDataSource nie może ustalić, ile rekordów jest zwracanych przez zapytanie, ani usługa DataReader nie oferuje żadnych technik sortowania zwracanych danych.
Krok 4. Używanie niestandardowej instrukcji SQL lub procedury składowanej
Podczas konfigurowania kontrolki SqlDataSource zapytanie używane do zwracania danych można określić w jednym z dwóch podejść jako niestandardową instrukcję SQL lub procedurę składowaną albo jako kolumny z istniejącej tabeli lub widoku. W kroku 2 zbadaliśmy wybieranie kolumn z Products
tabeli. Przyjrzyjmy się użyciu niestandardowej instrukcji SQL.
Dodaj kolejną kontrolkę GridView do Querying.aspx
strony i wybierz utworzenie nowego źródła danych z listy rozwijanej w tagu inteligentnym. Następnie wskaż, że dane zostaną pobrane z bazy danych, co spowoduje utworzenie nowej kontrolki SqlDataSource. Nadaj kontrolce ProductsWithCategoryInfoDataSource
nazwę .
Rysunek 12. Tworzenie nowej kontrolki SqlDataSource o nazwie ProductsWithCategoryInfoDataSource
Na następnym ekranie zostanie wyświetlony monit o określenie bazy danych. Jak zrobiliśmy to z powrotem na rysunku 7, wybierz z NORTHWINDConnectionString
listy rozwijanej i kliknij przycisk Dalej. Na ekranie Konfigurowanie instrukcji Select wybierz przycisk radiowy Określ niestandardową instrukcję SQL lub procedurę składowaną, a następnie kliknij przycisk Dalej. Spowoduje to wyświetlenie ekranu Define Custom Statements or Stored Procedures (Definiowanie instrukcji niestandardowych lub procedur składowanych), który oferuje karty z etykietą SELECT, UPDATE, INSERT i DELETE. Na każdej karcie możesz wprowadzić niestandardową instrukcję SQL w polu tekstowym lub wybrać procedurę składowaną z listy rozwijanej. W tym samouczku przyjrzymy się wprowadzeniu niestandardowej instrukcji SQL; Następny samouczek zawiera przykład, który używa procedury składowanej.
Rysunek 13. Wprowadź niestandardową instrukcję SQL lub wybierz procedurę składowaną
Niestandardową instrukcję SQL można wprowadzić ręcznie w polu tekstowym lub można utworzyć graficznie, klikając przycisk Konstruktor zapytań. W konstruktorze zapytań lub polu tekstowym użyj następującego zapytania, aby zwrócić ProductID
pola i ProductName
z Products
tabeli przy użyciu elementu , JOIN
aby pobrać produkt z CategoryName
Categories
tabeli:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Categories
INNER JOIN Products ON
Categories.CategoryID = Products.CategoryID
Rysunek 14. Zapytanie można konstruować graficznie przy użyciu konstruktora zapytań
Po określeniu zapytania kliknij przycisk Dalej, aby przejść do ekranu Zapytania testowego. Kliknij przycisk Zakończ, aby ukończyć pracę kreatora SqlDataSource.
Po zakończeniu pracy kreatora kontrolka GridView będzie mieć dodane do niego trzy pola BoundFields z wyświetlonymi ProductID
kolumnami , ProductName
i CategoryName
zwróconymi z zapytania i w wyniku następującego znacznika deklaratywnego:
<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>
Rysunek 15. Widok GridView przedstawia każdy identyfikator produktu, nazwę i skojarzona nazwa kategorii (kliknij, aby wyświetlić obraz o pełnym rozmiarze)
Podsumowanie
W tym samouczku pokazano, jak wykonywać zapytania i wyświetlać dane przy użyciu kontrolki SqlDataSource. Podobnie jak obiekt ObjectDataSource, źródło SqlDataSource służy jako serwer proxy, zapewniając deklaratywne podejście do uzyskiwania dostępu do danych. Jego właściwości określają bazę danych do nawiązania połączenia i wykonywania zapytania SQLSELECT
. Można je określić za pomocą okno Właściwości lub za pomocą kreatora Konfigurowanie źródła danych.
Przykłady SELECT
zapytań przeanalizowane w tym samouczku zwróciły wszystkie rekordy z określonego zapytania. Kontrolka SqlDataSource może jednak zawierać klauzulę WHERE
z parametrami, których wartości są przypisywane programowo lub są automatycznie pobierane z określonego źródła. W następnym samouczku sprawdzimy, jak tworzyć i używać sparametryzowanych zapytań.
Szczęśliwe programowanie!
Dalsze informacje
Aby uzyskać więcej informacji na temat tematów omówionych w tym samouczku, zapoznaj się z następującymi zasobami:
- SqlDataSource, kontrolka — omówienie
- ASP.NET samouczki Szybki start: kontrolka SqlDataSource
- The Web.config
<connectionStrings>
Element - Dokumentacja parametrów połączenia bazy danych
Informacje o autorze
Scott Mitchell, autor siedmiu książek ASP/ASP.NET i założyciel 4GuysFromRolla.com, współpracuje z technologiami internetowymi firmy Microsoft od 1998 roku. Scott pracuje jako niezależny konsultant, trener i pisarz. Jego najnowsza książka to Sams Teach Yourself ASP.NET 2.0 w 24 godzinach. Można go uzyskać pod adresem mitchell@4GuysFromRolla.com. lub za pośrednictwem swojego bloga, który można znaleźć na stronie http://ScottOnWriting.NET.
Specjalne podziękowania
Ta seria samouczków została omówiona przez wielu przydatnych recenzentów. Recenzenci w tym samouczku to Susan Connery, Bernadette Leigh i David Suru. Chcesz przejrzeć nadchodzące artykuły MSDN? Jeśli tak, upuść mi wiersz pod adresem mitchell@4GuysFromRolla.com.