Dostęp do baz danych w ASP.NET.



Podobne dokumenty
Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Zaawansowane aplikacje internetowe - laboratorium

KASK by CTI. Instrukcja

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Wprowadzenie do Doctrine ORM

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms

Ćwiczenie 8. Kontrolki serwerowe

Język SQL, zajęcia nr 1

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

PHP: bazy danych, SQL, AJAX i JSON

BACKUP BAZ DANYCH MS SQL

Ćwiczenie 7 Komponent IBQuery - uruchamianie zapytań aktualizujących. 1. Przygotować w nowym katalogu aplikację do aktualizacji bazy SKOKI.GDB.

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Aplikacje internetowe i rozproszone - laboratorium

BACKUP BAZ DANYCH FIREBIRD

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

8. Listy wartości, dodatkowe informacje dotyczące elementów i przycisków

Kostki OLAP i język MDX

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

Aplikacje internetowe - laboratorium

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS

3. Budowa prostych raportów opartych o bazę danych

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Aplikacje internetowe - laboratorium ASP.NET praca z bazą danych

Leszek Stasiak Zastosowanie technologii LINQ w

Podstawy technologii WWW

Telesprzedaż by CTI Instrukcja

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Instrukcja laboratoryjna

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy danych i strony WWW

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

System Comarch OPT!MA v. 17.1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

System imed24 Instrukcja Moduł Analizy i raporty

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Ćwiczenie 4 Aktualizacja tabel. 1. Skopiuj aplikację przygotowaną na poprzednich zajęciach w katalogu SKOKI1 do nowego katalogu SKOKI2.

emszmal 3: Eksport do WAPRO WF-FaKir dla Windows (plugin dostępny w wersji ecommerce)

Aplikacje WWW - laboratorium

Wykład 5: PHP: praca z bazą danych MySQL

Połączenie AutoCad'a z bazą danych

Autor: Joanna Karwowska

Makra Access 2003 wg WSiP Wyszukiwanie, selekcjonowanie i gromadzenie informacji Ewa Mirecka

Instrukcja obsługi platformy B2B ARA Pneumatik

R o g e r A c c e s s C o n t r o l S y s t e m 5

emszmal 3: Automatyczne księgowanie płatności do zamówień w programie Subiekt Nexo (plugin dostępny w wersji ecommerce)

Kontrola dostępu w ASP.NET

Symfonia Produkcja. Kreator raportów. Wersja 2013

Ćwiczenie zapytań języka bazy danych PostgreSQL

Przewodnik Szybki start

Oracle Application Express

emszmal 3: Automatyczne księgowanie płatności do zamówień w programie Subiekt GT (plugin dostępny w wersji ecommerce)

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Problemy techniczne SQL Server

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

emszmal 3: Eksport wyciągów do Subiekt (Su\Re) GT (plugin dostępny wraz z dodatkiem Biznes)

dziennik Instrukcja obsługi

Aplikacje WWW - laboratorium

Problemy techniczne SQL Server

Bazy danych Karta pracy 1

Pierwsza niedogodność dotyczy strony zarządzaj działami.

Wypożyczalnia by CTI. Instrukcja

Programowanie Obiektowe GUI

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Programowanie w języku Java. Bazy danych SQLite w Javie

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

Aplikacje internetowe laboratorium

Wdrożenie modułu płatności eservice. dla systemu Magento

5. Integracja stron aplikacji, tworzenie zintegrowanych formularzy i raportów

Część 3 - Konfiguracja

5. Bazy danych Base Okno bazy danych

Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005

Program Rabator dla Microsoft Windows.

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Transkrypt:

Ćwiczenie 12 Temat: Dostęp do baz danych w ASP.NET. Kontrolki źródeł danych i wizualizacyjne. Wyświetlanie i edycja danych. Cel ćwiczenia: W ramach ćwiczenie student zapozna się z kontrolkami umożliwiającymi dostęp, wyświetlanie zawartości oraz edycję danych w bazie danych. Pozna także metody wykorzystania innych kontrolek do filtrowania wyników wyświetlonych z bazy. Uwaga! Celem ćwiczenie nie jest zapoznanie studenta z językiem zapytań baz danych SQL, ponieważ zagadnienie to jest tematem innego kursu.

Strony internetowe korzystające z baz danych Zastosowanie baz danych do przechowywania uporządkowanych informacji np. o klientach, hasłach użytkowników, ich preferencjach czy o oferowanych produktach jest bardzo popularnym zabiegiem podczas tworzenia zaawansowanych serwisów WWW. Serwer WWW poprzez wykorzystanie odpowiednich mechanizmów komunikacji z serwerem baz danych pobiera, aktualizuje lub kasuje informacje, a następnie na ich podstawie buduje dynamiczną stronę dla użytkownika serwisu: Serwer baz danych Serwer WWW Użytkownik serwisu Kontrolka źródła danych Technologia ASP.NET umożliwia komunikację z serwerami baz danych m.in. za pomocą kontrolki źródła danych SQLDataSource. Kontrolka ta umożliwia: pobieranie danych z bazy (SelectQuery) dodawanie danych do bazy (InsertQuery) aktualizację danych w bazie (UpdateQuery) kasowanie danych z bazy (DeleteQuery) Wyżej wymienione akcje definiowane są we właściwościach kontrolki, w polach podanych w powyższych nawiasach. Edycja wyżej wymienionych właściwości kontrolki odbywa się za pomocą formatki Command and Parameter Editor (patrz poniższy screen), która umożliwia utworzenie zapytanie SQL (ręcznie, lub za pomocą narzędzia Query builder ) a także definicję parametrów zapytania oraz przypisanie wartości pobranych z innych kontrolek do tych parametrów. 110

Parametry połączenia z bazą - ConnectionString Kontrolka źródła danych do poprawnego działania potrzebuje wskazania parametrów połączenia z bazą (tzw. definicja danych połączenia Connection String ), które mogą zostać wskazane we właściwościach kontrolki w polu ConnectionString. Jeśli w środowisku Visual Studio nie były jeszcze definiowane żadne połączenia z bazą, do wyboru będzie możliwe tylko uruchomienie kreatora nowego połączenia: W pierwszym kroku kreator pyta o mechanizm bazy danych, a w kolejnym o parametry połączenia z bazą: w przypadku, gdy bazą jest lokalny plik np. pochodzący z programu MS 111

Access, parametrem będzie ścieżka do pliku oraz hasło i nazwa użytkownika na prawach którego aplikacja będzie komunikować się z bazą. W przypadku, gdy bazą danych jest serwer baz danych, podczas konfiguracji wskazać należy adres serwera, dane użytkownika oraz nazwę bazy danych. Parametry połączenia zapisane mogą zostać także w pliku web.config za pomocą znacznika: <connectionstrings> <add name="klienciconnectionstring" connectionstring="provider=microsoft.jet.oledb.4.0;data Source=C:\ klienci.mdb" providername="system.data.oledb" /> </connectionstrings> Kontrolka widoku danych Użycie wyżej opisanej kontrolki SQLDataSource powoduje nawiązanie połączenia z bazą oraz realizację wymiany danych (pobranie danych, wysłanie danych do bazy lub też wysłanie polecenia usunięcia danych). Jednak sama kontrolka nie jest w stanie wyświetlić na stronie pobranych z bazy danych. W tym celu wykorzystana może zostać kontrolka tabelarycznego widoku danych GridView. W najprostszym scenariuszu wystarczy w parametrach kontrolki GridView wskazać źródło danych np. wcześniej poprawnie skonfigurowaną instancję kontrolki SQLDataSource i już po uruchomieniu aplikacji kontrolka GridView wyświetli dane pobrane z bazy przez kontrolkę SQLDataSource. 112

Zadanie 1 Wykorzystując kontrolkę SQLDataSource oraz kontrolkę GridView wyświetlić dane z bazy danych MS Access. Stworzyć dla strony menu osadzone w stronie wzorcowej MasterPage. W celu realizacji zadania postępuj zgodnie z poleceniami: 1. Utwórz nowy projekt strony (WebSite) o nazwie BazaKlientow. Dodaj do projektu plik strony wzorcowej MasterPage.master oraz plik mapy strony Web.sitemap 2. Edytuj plik mapy strony: 2.1. W głównej gałęzi (sitemapnode) umieść dwia podrzędne elementy: <?xml version="1.0" encoding="utf-8"?> <sitemap xmlns="http://schemas.microsoft.com/aspnet/sitemap-file-1.0" > <sitemapnode url="" title="" description=""> <sitemapnode url="klienci.aspx" title="klienci" description="" /> <sitemapnode url="statystyki.aspx" title="statystyki" description="" /> </sitemapnode> </sitemap> 3. Edytuj plik strony wzorcowej MasterPage.master: 3.1. Dodaj do strony wzorcowej kontrolki: Menu oraz SiteMapDataSource. 3.2. We właściwościach kontrolki SiteMapDataSource zmień właściwość ShowStartingNode na wartość false 3.3. We właściwościach kontrolki Menu zmień właściwość DataSourceID wskazując kontrolkę SiteMapDataSource jako źródło danych 3.4. We właściwościach kontrolki Menu zmień właściwość Orientatnion na wartość Horizontal 4. Pobierz plik, rozpakuj oraz umieść w katalogu, gdzie zapisana została strona internetowa plik bazy danych: http://kzi.polsl.pl/ti/cwiczenia/klienci.zip 4.1. Otwórz rozpakowany plik w programie MS Access, aby zapoznać się ze strukturą bazy 5. Dodaj do projektu strony plik Statystyki.aspx, osadź nowy plik we wcześniej utworzonej stronie wzorcowej, a następnie 5.1. Ustaw stronę Statystyki.aspx jako stronę startową projektu 5.2. Wpisz na stronę Statystyki.aspx zdanie: Dane statystyczne 5.3. Dodaj na stronę Statystyki.aspx kontrolkę SQLDataSource oraz kontrolkę GridView 113

5.4. We właściwościach kontrolki GridView wskaż w polu DataSourceID kontrolkę SQLDataSource jako źródło danych 5.5. We właściwościach kontrolki SQLDataSource w polu ConnectionString wybierz: <New connection> a następnie, w kreatorze połączenia: 5.5.1. Wybierz typ bazy: MS Access Database File (UWAGA! Odznacz opcję Always use this selection ) 5.5.2. Wskaż ścieżkę do pliku 5.5.3. Przetestuj połączenie za pomocą przycisku Test connection a następnie zakończ pracę kreatora 5.6. We właściwościach kontrolki SQLDataSource w polu SelectQuery klikniej w symbol [...] aby uruchomić kreator zapytań 5.7. W polu Select command wpisz zapytanie do bazy: SELECT AVG(Wiek) AS ŚredniaWieku, MAX(Wiek) AS Najstarszy, MIN(Wiek) AS Najmłodszy, AVG(PunktyPromocyjne) AS ŚredniaPkt, MAX(PunktyPromocyjne) AS MaxPkt, MIN(PunktyPromocyjne) AS MinPkt FROM Klienci * Wyjaśnienie zapytania SQL: Powyższe zapytanie wyświetla statystki dla pól (kolumn) w tabeli klienci: średnią wieku klientów, wiek najstarszego i najmłodszego klienta oraz takie same statystyki dla kolumny PunktyPromocyjne 5.8. Zatwierdź poprzez OK 5.9. We właściwościach kontrolki GridView w polu Columns klikniej w symbol [...] aby zmienić nazwy kolumn (właściwość Header Text) na odpowiednio: Średnia wieku klientów Wiek najstarszego klienta Wiek najmłodszego klienta Średnia punktów promocyjnych Maksymalna liczba punktów Minimalna liczba punktów 5.10. Uruchom aplikację internetową aby sprawdzić efekt. 6. Dodaj do projektu plik Klienci.aspx, osadź nowy plik we wcześniej utworzoną stronę wzorcową 6.1. Wpisz na stronę Klienci.aspx zdanie: Spis klientów 114

6.2. Dodaj na stronę Klienci.aspx DWIE instancje kontrolki SQLDataSource, jedną kontrolkę GridView oraz Kontrolkę DropDownList 6.3. We właściwościach kontrolek SQLDataSource1 oraz SQLDataSource2 w polach ConnectionString wybierz wcześniej utworzone połączenie do pliku bazy danych 6.4. We właściwościach kontrolki SQLDataSource1 w polu SelectQuery kliknij w symbol [...] aby uruchomić kreator zapytań 6.5. W polu Select command wpisz zapytanie do bazy: SELECT * FROM [Klienci] WHERE ([Miasto] = @miasto) * Wyjaśnienie zapytania SQL: Powyższe zapytanie wyświetla wszystkich klientów, którzy mieszkają w mieście zdefiniowanym przez parametr @miasto 6.6. Wciśnij guzik Add Parameter aby określić nowy parametr. Wprowadź nazwę dla parametu: miasto, a następnie w polu Parameter Source wskaż, iż źródłem dla parametru jest wartość kontrolki (Control) a następnie wybierz ControlID: DropDownList1 6.7. Zatwierdź poprzez OK 6.8. We właściwościach kontrolki SQLDataSource2 w polu SelectQuery kliknij w symbol [...] aby uruchomić kreator zapytań 6.9. W polu Select command wpisz zapytanie do bazy: SELECT Miasto FROM Klienci GROUP BY Miasto * Wyjaśnienie zapytania SQL: Powyższe zapytanie wyświetla wszystkie unikalne miasta (bez powtórzeń) w których mieszkają klienci 6.10. Zatwierdź poprzez OK 6.11. We właściwościach kontrolki GridView wskaż w polu DataSourceID kontrolkę SQLDataSource1 jako źródło danych 6.12. We właściwościach kontrolki DropDownList wskaż w polu DataSourceID kontrolkę SQLDataSource2 jako źródło danych, a następnie wartość pola AutoPostBack ustaw na true 6.13. Kliknij dwa razy w trybie Design strony w kontrolkę DropDownList1 aby utworzyć w pliku.cs metodę wykonywane gdy zmieni się wybrana pozycja na liście, a następnie w ciele metody wpisz (w celu odświeżenia zawartości kontrolki GridView po zmianie wybranego miasta): 115

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { GridView1.DataBind(); } 6.14. Uruchom aplikację internetową aby sprawdzić efekt. Edycja danych w bazie Jak już wspominano wcześniej, kontrolka SQLDataSource ma możliwość także dodawania, kasowania i aktualizacji danych w bazie. Każda kontrolka SQLDataSource może mieć jednocześnie zdefiniowane polecenie wyświetlające, usuwające, aktualizujące lub dodające dane. Wywołanie odpowiedniej komendy może zostać realizowane za pomocą metod wbudowanych kontrolki z użyciem kodu c#, np. wywołanie: wyświetlenia danych: SqlDataSource1.Select(); dodawanie danych: SqlDataSource1.Insert(); kasowanie danych: SqlDataSource1.Delete(); aktualizacja: SqlDataSource1.Update(); Do tworzenia odpowiednich zapytań służą odpowiednia pola we właściwościach kontrolki SQLDataSource (SelectQuery, InsertQuery, DeleteQuery, UpdateQuery) i tak jak w przypadku polecenia Select polecenia mogą zostać sparametryzowane, a wartości parametrów mogą być pobierane z kontrolek serwerowych. Zadanie 2 Dodawanie i usuwanie klientów 1. Edytuj plik mapy strony: 1.1. Dodaj do mapy strony kolejną podstronę: <sitemapnode url="nowyklient.aspx" title="nowy klient" description="" /> 116

2. Dodaj do projektu plik NowyKlient.aspx, osadź nowy plik we wcześniej utworzonej stronie wzorcowej, a następnie: 2.1. Dodaj na stronę na stronę NowyKlient.aspx kontrolkę SQLDataSource oraz kontrolkę GridView 3. We właściwościach kontrolki GridView wskaż w polu DataSourceID kontrolkę SQLDataSource1 jako źródło danych 4. We właściwościach kontrolki SQLDataSource1 w polu ConnectionString wybierz wcześniej utworzone połączenie do pliku bazy danych 5. We właściwościach kontrolki SQLDataSource1 w polu SelectQuery kliknij w symbol [...] aby uruchomić kreator zapytań 5.1. W polu Select command wpisz zapytanie do bazy: SELECT TOP 10 Identyfikator, Nazwisko, Imie, PunktyPromocyjne, Wiek, Miasto, Ulica, NrDomu, NrMieszkania FROM Klienci ORDER BY Identyfikator DESC * Wyjaśnienie zapytania SQL: Polecenie wyświetla wszystkie pola z tabeli Klienci ale tylko dla 10 ostatnich zapisanych w tabeli rekordów (top 10 oznacza iż powinny zostać wyświetlone pierwsze 10 rekordów, jednak dopisek DESC sortuje rekordy w odwrotnej kolejności, stąd wyświetlone zostanie 10 ostatnich rekordów) 6. Dodatkowo dodaj na stronę następujące kontrolki, odtwarzając poniższy układ: 7. We właściwościach kontrolki SQLDataSource1 w polu InsertQuery kliknij w symbol [...] aby uruchomić kreator zapytań 7.1. W polu Select command wpisz zapytanie do bazy: INSERT INTO Klienci(Nazwisko, Imie, PunktyPromocyjne, Wiek, Miasto, Ulica, NrDomu, NrMieszkania) VALUES (@na,@im, 0, @wi,@mi,@ul,@nrdo,@nrmi) * Wyjaśnienie zapytania SQL: Polecenie dodaje do tabeli Klienci w pola określone w pierwszym nawiasie wartości określone w nawiasie drugim, a tutaj są nimi symbole parametrów 7.2. Zdefiniować parametry zapytania, tak aby dane dodawane jako nowy rekord pobierane były z pól tekstowych. Wzór poniżej: 117

8. Kliknij dwa razy w trybie Design strony w kontrolkę przycisku Dodaj aby utworzyć w pliku.cs metodę wykonywaną gdy po naciśnięciu guzika, a następnie w ciele metody wpisz poniższe polecenia, w celu wykonania polecenia utworzenia nowego rekordu w bazie a następnie odświeżenia zawartości kontrolki GridView protected void Button1_Click(object sender, EventArgs e) { SqlDataSource1.Insert(); GridView1.DataBind(); } 9. Uruchom aplikację internetową aby sprawdzić efekt. 10. Dodatkowo dodaj na stronę następujące kontrolki, odtwarzając poniższy układ: 118

11. We właściwościach kontrolki SQLDataSource1 w polu DeleteQuery kliknij w symbol [...] aby uruchomić kreator zapytań 11.1. W polu Select command wpisz zapytanie do bazy: DELETE FROM Klienci WHERE Identyfikator=@id * Wyjaśnienie zapytania SQL: Polecenie kasuje z tabeli Klienci rekord, którego identyfikator jest równy wartości przekazanej jako parametr 11.2. Zdefiniować parametr zapytania, tak aby identyfikator rekordu do usunięcia wskazywany był z pola tekstowego dodanego w punkcie 10 tego zadania. 12. Uruchom aplikację internetową aby sprawdzić efekt. Połączenia z bazą za pomocą kodu c# Możliwym jest także wykorzystanie kodu c# do wywołania połączenia z bazą. W celu realizacji połączenia, skorzystać należy z typów i poleceń dostępnych w przestrzeni nazw: using System.Data.OleDb; Przykład Poniższy przykład prezentuje wykorzystanie składni c# do nawiązanie połączenia, a następnie za pomocą pętli while do dynamicznego zbudowania tabeli, której zawartość pobrana została z bazy (tabeli Klienci). Pamiętać należy, że aby zadziałał poniższy przykład w pliku Web.config istnieć musi definicja połączenia (Connection String) o nazwie: klienciconnectionstring try { OleDbConnection myconnection = new OleDbConnection(System.Web.Configuration.WebConfigurationManager.Connection Strings["klienciConnectionString"].ConnectionString); OleDbDataReader myreader = null; OleDbCommand mycommand = new OleDbCommand("select * from Klienci", myconnection); myconnection.open(); myreader = mycommand.executereader(); Response.Write("<table border=1>"); while (myreader.read()) Przykład 119

{ Response.Write("<tr><td>" + myreader["nazwisko"].tostring() + "</td>"); Response.Write("<td>" + myreader["imie"].tostring() + "</td>"); Response.Write("<td>" + myreader["wiek"].tostring() + "</td></tr>"); } Response.Write("</table>"); } catch (Exception exep) { Response.Write(exep.ToString()); } Przykład 120