Wykonywanie zapytań o dane przy użyciu kontrolki SqlDataSource (C#)

Autor : Scott Mitchell

Pobierz plik PDF

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żywać 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 warstwy 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ą obiektuDataSource , zobaczyliśmy, jak używać nowej kontrolki ObjectDataSource ASP.NET 2.0 s do deklaratywnego interfejsu z architekturą z warstwy prezentacji.

Mimo że do tej pory wszystkie samouczki 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, aktualizowania i konserwacji aplikacji. Jednak tworzenie niezawodnej architektury może być niepotrzebne podczas tworzenia niezwykle prostych, jednorazowych aplikacji.

ASP.NET 2.0 zapewnia 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 microsoft SQL Server, Microsoft Access, Oracle, MySQL i innych. W tym samouczku i następnych trzech omówimy sposób pracy z kontrolką SqlDataSource, eksplorując sposób wykonywania zapytań i filtrowania danych bazy danych, a także jak używać elementu SqlDataSource do wstawiania, aktualizowania i usuwania danych.

ASP.NET 2.0 zawiera pięć kontrolek źródła danych Built-In

Rysunek 1. ASP.NET 2.0 zawiera pięć kontrolek źródła danych Built-In

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 ma 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()i Delete()Update() do interakcji z podstawową architekturą.

Źródło SqlDataSource zapewnia 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 ad hoc zapytania SQL lub procedury składowane, które mają być wykonywane w celu wstawiania, aktualizowania, usuwania i pobierania danych. Metody sqlDataSource s Select(), Insert(), Update()i Delete() podczas wywoływanego nawiązywania połączenia z określoną bazą danych i wystawiają odpowiednie zapytanie SQL. Jak pokazano na poniższym diagramie, te metody wykonują chrząkanie pracy podczas nawiązywania połączenia z bazą danych, wystawiania zapytania i zwracania wyników.

Źródło SqlDataSource służy jako serwer proxy do bazy danych

Rysunek 2. Źródło SqlDataSource służy jako serwer proxy do 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 do 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 nowych do ASP.NET 2.0, aby podejrzewać, że kontrolka AccessDataSource została zaprojektowana do pracy wyłącznie z programem Microsoft Access z kontrolką SqlDataSource przeznaczoną do pracy wyłącznie z firmą Microsoft SQL Server. Chociaż element AccessDataSource jest przeznaczony 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. Dotyczy to między innymi wszystkich magazynów danych zgodnych ze standardem OleDb lub ODBC, takich 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 pełnego 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święć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 do tego folderu następujące strony ASP.NET, aby skojarzyć każdą stronę ze stroną wzorcową Site.master :

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

Dodawanie stron ASP.NET dla samouczków SqlDataSource-Related

Rysunek 3. Dodawanie stron ASP.NET dla samouczków SqlDataSource-Related

Podobnie jak w przypadku innych folderów, 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ę użytkownika, Default.aspx przeciągając ją z Eksplorator rozwiązań na widok projektowy strony.

Dodaj kontrolkę Użytkownika SectionLevelTutorialListing.ascx, aby Default.aspx

Rysunek 4. Dodawanie kontrolki SectionLevelTutorialListing.ascx użytkownika do Default.aspx (kliknij, aby wyświetlić obraz pełnowymiarowy)

Na koniec dodaj te cztery strony jako wpisy do Web.sitemap pliku. W szczególności dodaj następujące znaczniki 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.sitemapprogramu poświęć 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.

Mapa witryny zawiera teraz wpisy samouczków sqlDataSource

Rysunek 5. Mapa witryny zawiera teraz wpisy 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 projektowego. Przeciągnij kontrolkę SqlDataSource z przybornika na Projektant i ustaw ją ID na ProductsDataSourcewartość . 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.

Kliknij pozycję Konfiguruj dane Source Link z tagu inteligentnego sqlDataSource

Rysunek 6. Kliknij pozycję Konfiguruj dane Source Link z tagu inteligentnego sqlDataSource s

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 elementu SqlDataSource wiąże się to z określeniem podstawowej bazy danych do użycia i dostarczeniem instrukcji AD hoc SQL 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 Data Connections 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.

Wybierz pozycję NORTHWINDConnectionString z listy Drop-Down

Rysunek 7. Wybieranie elementu NORTHWINDConnectionString z listy Drop-Down

Po wybraniu bazy danych kreator poprosi o zwrócenie danych przez zapytanie. Możemy określić kolumny tabeli lub widoku do zwrócenia albo wprowadzić niestandardową instrukcję SQL lub określić procedurę składowaną. Można przełączać się między tym wyborem za pomocą opcji Określ niestandardową instrukcję SQL lub procedurę składowaną oraz Określ kolumny z tabeli lub przycisków radiowych widoku.

Uwaga

W tym pierwszym przykładzie użyjemy 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śl kolumny 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, ProductNamei UnitPrice z Products tabeli. Jak pokazano na rysunku 8, po wybraniu tych opcji kreator wyświetli wynikowe instrukcje SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]SQL .

Zwracanie danych z tabeli Products

Rysunek 8. Zwracanie danych z Products tabeli

Po skonfigurowaniu kreatora w celu zwrócenia ProductIDkolumn , ProductNamei UnitPrice z Products tabeli kliknij przycisk Dalej. Ten ekran końcowy 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.

Kliknij przycisk Testuj zapytanie, aby przejrzeć zapytanie SELECT

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 jedynie 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 Web.config, użyj składni <%$ expressionPrefix:expressionValue %>. Zazwyczaj wyrażeniePrefix to ConnectionStrings, a expressionValue to nazwa parametrów połączenia w Web.config<connectionStrings> 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 powią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 elemecie GridView. Z przybornika przeciągnij element GridView na stronę i powiąż go ProductsDataSource z usługą SqlDataSource, wybierając źródło danych z listy rozwijanej w tagu inteligentnym GridView.

Dodawanie kontrolki GridView i powiązanie jej z kontrolką SqlDataSource

Rysunek 10. Dodawanie kontrolki GridView i powiązanie jej z kontrolką SqlDataSource (kliknij, aby wyświetlić obraz pełnowymiarowy)

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 kontrolę źródła danych. Ponieważ źródło SqlDataSource zwraca trzy kolumny ProductIDbazy danych , ProductNamei UnitPrice istnieją trzy pola w elemecie GridView.

Poświęć chwilę na skonfigurowanie trzech elementów BoundFields elementu GridView. ProductName Zmień właściwość pola HeaderText na Product Name (Nazwa produktu) i UnitPrice pole s na Price (Cena). Sformatuj UnitPrice również pole jako walutę. Po wprowadzeniu tych modyfikacji znacznik deklaratywny kontrolki 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 , ProductIDi ProductNameUnitPrice wartości.

Obiekt GridView wyświetla wartości ProductID, ProductName i UnitPrice dla każdego produktu

Rysunek 11. Widok GridView wyświetla każdy produkt s ProductID, ProductNamei UnitPrice wartości (kliknij, aby wyświetlić obraz pełnowymiarowy)

Po odwiedzeniu strony element GridView wywołuje metodę kontroli Select() źródła danych. Gdy używaliśmy kontrolki ObjectDataSource, nazwaliśmy ProductsBLL to metodą klasy s GetProducts() . Jednak w Select() usłudze SqlDataSource metoda ustanawia połączenie z określoną bazą danych i wystawia element SelectCommand (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]w tym przykładzie). Funkcja SqlDataSource zwraca wyniki, które następnie wylicza GridView, tworząc wiersz w elemecie GridView dla każdego zwróconego rekordu bazy danych.

Funkcje kontroli sieci Web danych Built-In i kontrolka SqlDataSource

Ogólnie rzecz biorąc, funkcje związane z stronicowaniem, sortowaniem, sortowaniem, edytowaniem, 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, czy jest on powiązany z obiektem ObjectDataSource, czy 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 danych kontrolki Sieci Web naiwnie zwraca wszystkie rekordy ze 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 podzestaw 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 pośrednictwem elementu 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. Całkowita liczba rekordów zwracanych przez zapytanie ma zasadnicze znaczenie dla implementacji stronicowania można ustalić z zestawu danych. Ponadto wyniki zestawu danych można sortować za pomocą elementu DataView. Te możliwości są automatycznie używane przez usługę SqlDataSource, gdy żądania GridView są stronicowane lub posortowane.

Źródło SqlDataSource można skonfigurować tak, aby zwracało element DataReader zamiast zestawu danych, zmieniając jegoDataSourceMode właściwość z DataSet (domyślnej) na DataReader. Użycie elementu DataReader może być preferowane w sytuacjach podczas przekazywania wyników 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 stron, ponieważ usługa SqlDataSource nie może ustalić, ile rekordów jest zwracanych przez zapytanie, ani usługa DataReader nie oferuje żadnych technik sortowania zwróconych 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 opcję utworzenia 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 ProductsWithCategoryInfoDataSourcenazwę .

Tworzenie nowej kontrolki SqlDataSource o nazwie ProductsWithCategoryInfoDataSource

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 na rysunku 7, wybierz NORTHWINDConnectionString z 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 Definiowanie instrukcji niestandardowych lub procedur składowanych, który oferuje karty oznaczone etykietą SELECT, UPDATE, INSERT i DELETE. Na każdej karcie można 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.

Wprowadź niestandardową instrukcję SQL lub wybierz procedurę składowaną

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 w polu tekstowym użyj następującego zapytania, aby zwrócić ProductID pola i ProductName z tabeli przy użyciu elementu a JOIN , aby pobrać produkt CategoryName z CategoriesProducts tabeli:

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

Zapytanie można utworzyć graficznie przy użyciu konstruktora zapytań

Rysunek 14. Zapytanie można utworzyć graficznie przy użyciu konstruktora zapytań

Po określeniu zapytania kliknij przycisk Dalej, aby przejść do ekranu Testuj zapytanie. Kliknij przycisk Zakończ, aby ukończyć pracę kreatora SqlDataSource.

Po zakończeniu pracy kreatora element GridView będzie miał do niego dodane trzy pola BoundFields z ProductIDwyświetlonymi kolumnami , ProductNamei CategoryName zwróconymi z zapytania i w wyniku następującego deklaratywnego znaczników:

<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>

Kontrolka GridView wyświetla każdy identyfikator, nazwę i skojarzona nazwa kategorii produktu

Rysunek 15. Widok GridView przedstawia identyfikator, nazwę i skojarzona nazwa kategorii (kliknij, aby wyświetlić obraz pełnowymiarowy)

Podsumowanie

W tym samouczku pokazano, jak wykonywać zapytania o dane i wyświetlać je przy użyciu kontrolki SqlDataSource. Podobnie jak obiekt ObjectDataSource, usługa 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ń zbadane 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:

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 ciągu 24 godzin. Można do niego dotrzeć 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 sprawdzona przez wielu pomocnych recenzentów. Recenzenci w tym samouczku byli 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.