• Nie Znaleziono Wyników

Budowa interfejsu

N/A
N/A
Protected

Academic year: 2021

Share "Budowa interfejsu"

Copied!
16
0
0

Pełen tekst

(1)

ITA-101 Bazy Danych

Włodzimierz Dąbrowski, Przemysław Kowalczuk, Konrad Markowski

Moduł 13 Wersja 1.0

Budowa interfejsu

Spis treści

Budowa interfejsu ... 1

Informacje o module ... 2

Przygotowanie teoretyczne ... 3

Przykładowy problem ... 3

Podstawy teoretyczne... 3

Przykładowe rozwiązanie ... 5

Porady praktyczne ... 8

Uwagi dla studenta ... 9

Dodatkowe źródła informacji... 9

Laboratorium podstawowe ... 11

Problem 1 (czas realizacji 45 minut) ... 11

Laboratorium rozszerzone ... 16

Zadanie 1 (czas realizacji 90 min) ... 16

(2)

Informacje o module

Opis modułu

W module tym zobaczysz, jak napisać aplikację, która będzie wyciągała informacje z bazy danych prac dyplomowych. Dowiesz się, jak za pomocą Visual Studio utworzyć bazę danych, połączyć się z nią i wprowadzić do niej dane. Następnie zobaczysz, jak stworzyć aplikację Windows, która będzie korzystała z tych danych.

Cel modułu

Celem modułu jest zapoznanie czytelnika z podstawami programowania w Visual Studio 2008 w takim stopniu, żeby potrafił samodzielnie stworzyć aplikację dostępową do danych zgromadzonych w bazie danych.

Uzyskane kompetencje

Po zrealizowaniu modułu będziesz:

• potrafił samodzielnie stworzyć prostą aplikację dostępu do danych

• potrafił stworzyć bazę danych za pomocą Microsoft Visual Studio 2008

• potrafił nawiązać połączenie z bazą danych Microsoft SQL Server 2008

• umiał poruszać się po Microsoft Visual Studio 2008

• wiedział co to jest ADO.NET Wymagania wstępne

Przed przystąpieniem do pracy z tym modułem powinieneś:

• potrafić zaprojektować bazę danych

• potrafić zaimplementować bazę danych wraz z jej obiektami

• potrafić tworzyć proste procedury składowane i wyzwalacze

• potrafić definiować użytkowników i nadawać im uprawnienia Mapa zależności modułu

Zgodnie z mapą zależności przedstawioną na rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznać się z materiałem zawartym w modułach 1, 3, 9, 10 i 11.

Moduł 13 Dodatek

Moduł 1

Moduł 2

Moduł 3

Moduł 4

Moduł 5 Moduł 6

Moduł 7 Moduł 8 Moduł 9

Moduł 10 Moduł 11

Moduł 12

Rys. 1 Mapa zależności modułu

(3)

Przygotowanie teoretyczne

Przykładowy problem

Ostatnim etapem wytwarzania bazy danych wraz z dostępem do niej z poziomu aplikacji jest konstrukcja interfejsu użytkownika. Istnieje wiele metod i narzędzi do tworzenia graficznego interfejsu użytkownika. Począwszy od rozwiązań prostszych, a co za tym idzie przeważnie nie wykorzystujących dobrodziejstw, jakie daje nam baza danych postawiona na SQL Server 2008, do rozwiązań profesjonalnych, wykorzystujących możliwości serwera bazodanowego.

Jeżeli baza danych została profesjonalnie zaprojektowana, zaimplementowana i oprogramowana, to wykorzystując na przykład Microsoft Visual Studio 2008 jesteśmy w stanie w łatwy sposób stworzyć aplikację dostępową o wysokim poziomie bezpieczeństwa wykorzystując wszystkie zaawansowane mechanizmy zabezpieczeń dostępne w SQL Server 2008. Aplikacja taka będzie odporna na typowe zagrożenia typu SQL Injection, gdyż zapytania zostaną ukryte w procedurach składowanych, a zatem haker będzie widział jedynie, że po sieci przesyłane są pewne funkcje wraz z parametrami. Należy podkreślić fakt, iż w celu stworzenia bezpiecznej bazy danych i aplikacji dostępowej wymagana jest ciągła współpraca różnych członków zespołu projektowego, począwszy od projektanta, administratora i programisty bazy danych, poprzez projektanta interfejsu użytkownika, a skończywszy na projektancie i programiście aplikacji dostępowej.

Podstawy teoretyczne

Rzadko wprowadza się dane do bazy za pomocą SQL Server 2008 za pomocą SQL Server Management Studio. Zwykle daje się możliwość wprowadzania danych użytkownikom za pomocą aplikacji dostępowej do bazy danych. Dane można również importować z różnych źródeł zewnętrznych lub tworzyć je za pomocą skryptów SQL, co zostało przedstawione we wcześniejszych modułach.

W dalszej części skoncentrujmy się na tworzeniu aplikacji Windows, która komunikuje się z SQL Server 2008 korzystając z ADO.NET.

Co to jest ADO.NET

ADO.NET zapewnia jednolity dostęp zarówno do źródeł danych, takich jak na przykład SQL Server 2008, jak również źródeł danych publikowanych za pomocą OLE DB lub XML. Należy zauważyć, iż aplikacje, które współdzielą dostęp do danych, mogą korzystać właśnie z ADO.NET w celu łączenia się ze źródłami, pobierania danych oraz manipulowania nimi.

Siłą ADO.NET jest wyraźne rozdzielenie dostępu do danych od manipulowania danymi na niezależnie odseparowane składniki. Składniki te mogą być wykorzystywane razem lub osobno.

ADO.NET wykorzystuje tzw. dostawców danych, za pomocą których można tworzyć połączenia z bazami danych, wykonywać polecenia i odbierać wyniki. Wyniki te mogą po pierwsze być przetwarzane bezpośrednio, a po drugie mogą trafiać do zbioru danych, tzw. obiektów DataSet.

W takiej sytuacji dane są udostępniane użytkownikom w dowolny sposób. Warto wspomnieć, że obiekty DataSet można wykorzystywać niezależnie od dostawców ADO.NET do lokalnego zarządzania danymi oraz w aplikacjach wczytujących dane w formacie XML.

Klasa ADO.NET znajduje się w podzespole System.Data.dll i jest zintegrowana z klasami XML znajdującymi się w podzespole System.Xml.dll. W momencie kompilacji kodu odwołującego się do przestrzeni nazw System.Data należy wskazać zarówno System.Data.dll, jak również System.Xml.dll.

ADO.NET zapewnia programistom tworzącym aplikacje w środowisku .NET Framework sposób dostępu do danych oraz coś bardzo ważnego – możliwość programowego manipulowania nimi.

Manipulacja oczywiście może odbywać się również na innych źródłach danych, na przykład na

(4)

Dostęp do danych z użyciem ADO.NET

Tworząc aplikacje korzystające z ADO.NET można spotkać się z różnymi wymaganiami dotyczącymi pracy z danymi. W pewnych sytuacjach wystarczy wyświetlenie danych w formularzu, innych razem trzeba opracować na przykład sposób wymiany informacji z inną firmą.

Niezależnie od tego, co zamierzamy robić z danymi, warto poznać kilka podstawowych zasad dotyczących obsługi danych w ADO.NET. Być może nigdy nie będziemy musieli znać szczegółów obsługi danych, natomiast kluczową sprawą jest zrozumienie architektury danych w ADO.NET, poznanie podstawowych komponentów oraz sposobu ich współpracy.

ADO.NET a uwierzytelnianie otwartego połączenia z bazą danych

W tradycyjnych aplikacjach typu klient/serwer komponenty ustanawiały połączenie z bazą danych i utrzymywały to połączenie przez cały czas działania aplikacji. Z kilku względów metoda ta nie jest zbyt praktyczna:

• Otwarte połączenie z bazą danych zajmuje wiele zasobów systemowych, które mogłyby zostać wykorzystane do innych celów. W wyniku utrzymywania stałego połączenia z bazą danych zmniejsza się liczba równocześnie utrzymywanych połączeń. Obciążenie spowodowane utrzymywaniem otwartych połączeń zmniejsza ogólną wydajność aplikacji.

• Bardzo trudne jest skalowanie aplikacji, która wymaga otwartego połączenia z bazą danych.

Należy pamiętać o tym, że aplikacja, która nie jest w pełni skalowalna, może na przykład dobrze działać z czterema użytkownikami, ale w żaden sposób nie poradzi sobie z setką równoczesnych użytkowników. Wymóg łatwej skalowalności dotyczy szczególnie aplikacji internetowych, gdyż obciążenie witryny internetowej może w bardzo niewielkim czasie zwiększyć się nawet o kilka rzędów wielkości.

• W aplikacjach internetowych komponenty nie są ze sobą połączone. W momencie kiedy serwer zakończy przetwarzanie i transmisję dokumentu w odpowiedzi na żądanie przeglądarki, pomiędzy serwerem a przeglądarką nie jest utrzymywane żadne połączenie.

Połączenie jest wznawiane w chwili kolejnego żądania, a zatem utrzymywanie otwartego połączenia z bazą w żaden sposób się nie opłaca, ponieważ nie jesteśmy w stanie przewidzieć, czy klient będzie jeszcze potrzebował dostępu do danych.

• Model, którego działanie oparte jest na utrzymywaniu otwartych połączeń ze źródłami danych może przyczynić się do tego, że wymiana danych będzie skomplikowana i niepraktyczna. Jeśli dwa komponenty muszą mieć dostęp do tych samych danych, obydwa muszą utrzymywać połączenie ze źródłem danych lub musi być dostępny jakiś inny sposób przekazywania danych.

Między innymi z wyżej wymienionych powodów dostęp do danych w ADO.NET został zaprojektowany w taki sposób, aby przede wszystkim oszczędnie korzystać z połączeń. A zatem aplikacje utrzymują połączenie z bazą danych tylko na czas odczytywania lub zapisywania danych.

Ponieważ bazy danych nie muszą utrzymywać nieaktywnych połączeń, mogą obsłużyć znacznie więcej użytkowników.

Współpraca z bazami danych za pomocą obiektów Command

Jednym z najpowszechniejszych zadań dostępu do danych jest odczytanie danych z bazy, a następnie wykonanie na nich jakichś operacji. W czasach wielkiej liczby informacji bardzo często dochodzi do sytuacji, że aplikacja musi przetworzyć nie jeden rekord, lecz ich cały zbiór. W wielu przypadkach przetwarzane dane pochodzą nie z jednej, lecz z wielu tabel.

Rekordy, które czytane są przez aplikację, traktowane są jako grupa. Na przykład aplikacja może zezwolić użytkownikowi na przejrzenie listy wszystkich autorów o nazwisku Kowalski, a następnie sprawdzić wszystkie książki napisane przez jednego Kowalskiego, potem przez kolejnego Kowalskiego i tak dalej.

(5)

Takie każdorazowe odwoływanie się do bazy danych, gdy aplikacja potrzebuje kolejnego rekordu do przetworzania jest niepraktyczne. W myśl tego, co zostało powiedziane wcześniej, takie podejście może zniwelować zalety płynące z utrzymywania małej liczby jednocześnie otwartych połączeń. Pewnym rozwiązaniem jest tymczasowe przechowywanie odczytanych z bazy rekordów i praca na takim tymczasowym zbiorze.

Na tym właśnie polega idea obiektu DataSet. DataSet jest swego rodzaju buforem, w którym znajdują się przechowywane rekordy pobrane z bazy danych. Obiekt ten działa podobnie do wirtualnej składnicy danych, a zatem zawiera jedną lub więcej tabel. Tabele te są fragmentami tabel rzeczywistej bazy danych. Ponadto obiekt DataSet posiada informacje o relacjach pomiędzy tymi tabelami oraz o ograniczeniach wartości danych, jakie mogą się znaleźć w tych tabelach.

Należy pamiętać, że dane przechowywane w DataSet nie są pełnym odzwierciedleniem fizycznej tabeli. Są one niewielkim podzbiorem danych przechowywanych w bazie. Zaletą jednak jest to, że można z nimi pracować w sposób podobny do pracy z danymi z rzeczywistej bazy danych.

Czasem zdarza się że aplikacja musi zapisać dane do bazy. Dane te można przetwarzać wewnątrz obiektu DataSet, a następnie przesłać je do podstawowej bazy danych.

Dane przechowywane w formacie XML

Wszystkie dane są przesyłane ze składnicy danych do DataSet, a następnie z DataSet do innych komponentów. ADO.NET do przesyłania danych wykorzystuje format XML. Pliki XML mogą być używane jak każde inne źródło danych. Ich zawartość można łatwo wczytać do obiektu DataSet.

XML jest podstawowym formatem danych w ADO.NET. API w ADO.NET automatycznie tworzą pliki lub strumienie XML (na podstawie DataSet) i wysyłają je do innego komponentu. Następnie komponent taki może wywołać inne API, by ponownie wczytać XML do obiektu DataSet.

Oparcie protokołów wymiany danych na XML przynosi wiele korzyści:

• XML jest standardem przemysłowym, a zatem komponenty obsługi danych w jednej aplikacji mogą wymieniać dane z komponentami w innej aplikacji. Warunkiem jest obsługa przez aplikację formatu XML.

• XML jest formatem tekstowym. Danych w postaci XML nie zawiera informacji binarnych, a zatem można je przesyłać za pomocą dowolnego protokołu – na przykład HTTP.

Przykładowe rozwiązanie

Tworzenie bazy danych z poziomu Microsoft Visual Studio 2008

Bazę danych, do której będziemy tworzyli aplikacje dostępową, można stworzyć na dwa sposoby.

Sposób pierwszy polega na definiowaniu bazy danych wraz z jej obiektami z poziomu SQL Server 2008. Sposób ten poznałeś w poprzednich modułach. Sposób drugi polega na stworzeniu bazy danych z poziomu Microsoft Visual Studio 2008.

Definicja bazy danych Dziekanat

Aby stworzyć bazę danych w Visual Studio 2008, w pierwszym kroku uruchamiamy środowisko.

Następnie w oknie Database Explorer klikamy prawym przyciskiem myszy Data Connections i wybieramy Add Connection, co pokazano na rys. 2.

W obrębie okna definicji połączenia z bazą danych możemy ustawić źródło danych oraz wskazać istniejący lub stworzyć nowy plik bazy danych. W kolejnym etapie określamy sposób autoryzacji.

(6)

Rys. 2 Okno definicji połączenia z bazą danych

Stwórzmy testową bazę danych Dziekanat. Wynik pokazano na rys. 3.

Rys. 3 Testowa baza danych dziekanat

Definicja tabeli, diagramu, widoku

W kolejnym kroku należy zdefiniować podstawowe obiekty bazy danych – tabele i widoki. W tym celu klikamy prawym przyciskiem myszy katalog Tables i wybieramy Add New Table. Tworzenie przykładowej tabeli Student pokazano na rys. 4.

Rys. 4 Przykładowa tabela Student

W analogiczny sposób definiujemy pozostałe tabele w bazie danych. Następnie wypełniamy ją przykładowymi danymi. Ostatnim krokiem jest stworzenie przykładowego widoku. W tym celu klikamy prawym przyciskiem myszy zakładkę Views i wybieramy Add New View. Następnie w oknie

(7)

Add Table wybieramy tabele, których będziemy używali w definiowanym widoku. Kolejny krok to wybór kolumn, które mają zostać użyte w definicji widoku. Na rys. 5 pokazano przykładowy widok na przedmioty, na które zapisani są studenci.

Rys. 5 Definicja widoku na przedmioty, na które zapisani są studenci

Tworzenie zestawu danych w Microsoft Visual Studio 2008

Stwórzmy aplikację dostępową do zarządzania bazą danych przygotowaną w poprzednich krokach.

Aby utworzyć obiekt DataSet, w pasku Data Sources klikamy odsyłacz Add New Data Sources.

Pierwszy ekran konfiguracji źródła danych umożliwia wybór typu źródła danych, które chcemy połączyć. Wybieramy Dziekanat.mdf, co pokazano na rys. 6.

Rys. 6 Wybór źródła danych

Następnie wybieramy wszystkie obiekty z bazy danych, które mają zostać uwzględnione w obiekcie DataSet – zatem wybieramy wszystkie tabele i widok. W wyniku powyższych operacji projekt powinien wyglądać mniej więcej tak, jak na rys. 7.

(8)

Rys. 7 Projekt aplikacji Dziekanat

Następnie w panelu Data Sources wybieramy węzeł Przedmiot i klikamy wskazującą w dół strzałkę, rozwijając listę. Wybieramy prezentację danych jako widok siatki danych. Spowoduje to pobranie do formularza wszystkich pól z obiektu DataSet w wielu wierszach w postaci siatki komórek, co pokazano na rys. 8.

Rys. 8 Stworzony formularz

W celu uruchomienia aplikacji należy wybrać przycisk F5. Wynik skompilowanej aplikacji przedstawia rys. 9.

Rys. 9 Wynik działania aplikacji

Porady praktyczne

• Jeśli korzystamy z obiektów SqlCommand z właściwością CommandType ustawioną na Text i przy ich pomocy przekazujemy do bazy danych informacje otrzymane od klienta, informacje te należy zawsze poddać procesowi walidacji. Niektórzy użytkownicy mogą próbować wysłać zmodyfikowane lub dodatkowe polecenia SQL w celu zdobycia dostępu do danych lub uszkodzenia bazy danych. Z tego względu bardzo ważne jest, żeby zawsze przed przekazaniem do bazy wprowadzonych przez użytkownika danych przeprowadzić proces

(9)

walidacji, czy dane te są poprawne. Najlepszą praktyką jest stosowanie procedur składowanych.

• Należy pamiętać, że DataSet jest tylko kontenerem przechowującym dane. Aby odczytać i zapisać dane z bazy należy użyć obiektu DataAdapter. DataAdapter zawiera jeden lub więcej obiektów SqlCommand używanych do wypełnienia pojedynczej tabeli obiektu DataSet. Obiekt ten zawiera cztery obiekty SqlCommand (do pobierania, dopisywania, uaktualniania i usuwania rekordów).

• Konfiguracja aplikacji jest przechowywana w pliku XML o takiej samej nazwie jak plik wykonywalny .exe.

• W wyniku skonfigurowania obiektu DataSet został utworzony plik .xsd, czyli dokument schematu XML definiujący wewnętrzna strukturę zestawu danych. Pamiętaj, że zestaw danych jest przechowywany w pamięci reprezentującej jedną lub wiele tabel z bazy danych.

ADO.NET będzie korzystał z pliku schematu przy współpracy z aplikacją.

• Przeważnie w projektach mamy jedna bazę danych, ale nie jest niczym niezwykłym potrzeba komunikowania się z dwiema lub więcej bazami danych. Z tego powodu połączenia z bazami danych ułożone są w drzewiastej strukturze, w której każda baza danych jest reprezentowana przez osobny węzeł.

• Dopóki nie zapiszemy projektu, znajduje się on w tymczasowym folderze. Po zapisaniu wszystkich plików projektu baza danych zostanie zapisana razem z innymi plikami projektu.

• Nie wszystkie kontrolki Windows można podłączyć do źródeł danych. Te, które można, posiadają właściwości DataBindings.

• Po przeciągnięciu zestawu danych ponad obszar projektowania, do znajdującego się niżej szarego panelu są dodawane nowe pozycje. Dolna część obszaru projektowania nazywamy panelem komponentów. Visual Studio umieszcza w nim kontrolki, które nie posiadają graficznej reprezentacji.

• W Visual Studio istnieje możliwość zastosowania metody „Smart Defaults”. Polega ona na sprawdzeniu, czy tabela z zestawu danych oprócz ID lub klucza głównego zawiera jakąś kolumnę typu tekstowego. Jeżeli tak, to kolumna ta jest podłączana do kontrolki.

• Gdy zajrzysz do panelu Properties obiektu tabeli, zobaczysz że w Visual Studio automatycznie są generowane cztery typy instrukcji: SELECT, INSERT, DELETE oraz UPDATE. Są to instrukcje, które umożliwiają przygotowanie w pełni działającej aplikacji bez pisania kodu źródłowego

Uwagi dla studenta

Jesteś przygotowany do realizacji laboratorium jeśli:

• rozumiesz co to jest ADO.NET

• rozumiesz na czym polega dostęp do danych poprzez ADO.NET

• potrafisz stworzyć prosta bazę danych korzystając z Visual Studio 2008

• potrafisz stworzyć prosty formularz obiektu typu tabela

Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów.

Dodatkowe źródła informacji

1. Patrice Pelland, Projektuj sam. Microsoft Visual C# 2008, APN Promise,

W książce autor w prosty i przejrzysty sposób prezentuje, jak należy poruszać się po Microsoft Visual Studio 2008, jak tworzyć proste projekty. Pozycja szczególnie polecana dla osób początkujących.

(10)

2. Kalen Delaney, Microsoft SQL Server 2005: Rozwiązania praktyczne krok po kroku, Microsoft Press, 2006

W książce autor w przystępny i zrozumiały sposób przedstawia podstawowe mechanizmy związane z bezpieczeństwem bazy danych przy założeniu dostępu do niej poprzez aplikację kliencką pisaną w Microsoft Visual Studio. Pozycja polecana zarówno dla osób początkujących, jak i pragnących poszerzyć swoją wiedzę z tej tematyki.

3. Nick Randolph, David Gardner, Professional Visual Studio 2008, Wrox, 2008

W książce autor w prosty i przejrzysty sposób omawia zaawansowane mechanizmy dostępne w Microsoft Visual Studio 2008. Prezentuje, jak należy poruszać się w tym środowisku oraz jak tworzyć proste i zaawansowane projekty. W książce znajdziesz rozszerzony opis ADO.NET. Pozycja szczególnie polecana dla osób zaawansowanych, chcących poszerzyć swoją wiedzę z zakresu programowania aplikacji klienckich.

(11)

Laboratorium podstawowe

Problem 1 (czas realizacji 45 minut)

Jesteś administratorem w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że firma planuje rozszerzenie systemu prac dyplomowych, którym zarządza na Twoim wydziale, dodając nową funkcjonalność związaną z wyszukiwaniem informacji o tym, na jakie przedmioty chodzili studenci podczas pięciu lat studiów. Zadanie, jakie przed Tobą stoi, to zmodyfikowanie struktury fizycznej bazy danych oraz stworzenie modułu aplikacyjnego.

Zadanie Tok postępowania

1. Utwórz projekt

• Uruchom Microsoft Visual Studio 2008, wybierając Start -> Programy ->

Microsoft Visual C# 2008.

• Z menu głównego wybierz File -> New Project -> Windows Form Application.

• Nadaj nazwę dla projektu Dziekanat-aplikacja.

2. Utwórz bazę danych

• W obrębie okna Database Explorer wybieramy Data Connections.

• Kliknij prawym przyciskiem myszy Data Connections i wybierz Add Connection.

• W polu Data Sources ustaw Microsoft SQL Server database File (SqlClient).

• W polu Database file name (new or existing) wpisz nazwę bazy danych Dziekanat.

Rys. 10 Definicja połączenia do bazy danych

3. Zdefiniuj tabele

• W panelu Database Explorer prawym przyciskiem myszy kliknij ikonę folderu Tables i wybierz Add New Table.

• Zdefiniuj kolumny nowej tabeli jak na rys. 11 i zapisz ją pod nazwą Student.

Rys. 11 Definicja tabeli Student

• Dodaj kolejną tabelę, zdefiniuj jej kolumny jak na rys. 12 i zapisz ją pod

(12)

nazwą Przedmiot.

Rys. 12 Definicja tabeli Przedmiot

• Dodaj kolejną tabelę, zdefiniuj jej kolumny jak na rys. 13 i zapisz ją pod nazwą Student_Przedmiot.

Rys. 13 Definicja tabeli Student_Przedmiot

4. Zdefiniuj Diagram

• Przejdź do panelu Database Explorer, prawym przyciskiem myszy kliknij węzeł Database Diagram i wybierz Add New Diagram.

• Wybierz wszystkie tabele i kliknij Add.

• Kliknij przycisk Close, aby poinformować Visual Studio, że już masz wszystkie potrzebne tabele.

• Połącz tabele związkami jak na rys. 14.

Rys. 14 Diagram bazy danych Dziekanat

5. Zdefiniuj widok

• Przejdź do panelu Database Explorer, prawym przyciskiem myszy kliknij węzeł Views i wybierz Add New View.

• Wybierz tabele Student, Przedmiot i Student_Przedmiot, które potrzebne są do utworzenia widoku i kliknij Add.

• Kliknij przycisk Close, aby poinformować Visual Studio, że już masz wszystkie potrzebne tabele.

• Zaznacz kolumny, które chcesz żeby weszły do definiowanego widoku.

Wynik pokazano na rys. 15.

(13)

Rys. 15 Definicja widoku

6. Uwórz obiekt DataSet

• Przejdź do panelu Data Sources i kliknij odsyłacz Add New Data Sources.

• Wybierz Database, a następnie kliknij przycisk Next.

• Wybierz bazę danych Dziekanat.mdf i kliknij przycisk Next.

• Zaznacz opcję Yes, save the connection as.

• Wybierz wszystkie tabele i widoki z bazy danych, a następnie kliknij Finish.

W Data Sources powinno pojawić się nowo zdefiniowane źródło danych, co pokazano na rys. 16.

Rys. 16 Zdefiniowane połączenie z bazą danych Dziekanat

7. Utwórz interfejs użytkownika

• Przejdź do panelu Toolbox, a następnie przeciągnij na formularz obiekt Label.

• W oknie właściwości w polu Text wpisz Mini aplikacja obsługi dziekanatu.

• Przejdź do panelu Toolbox, a następnie przeciągnij na formularz obiekt TabCotrol.

• W oknie właściwości w polu Text dla kolejnych zakładek wpisz:

Studenci, Przedmioty i Na jakie przedmioty uczęszczają studenci (rys.

17).

(14)

Rys. 17 Dodane obiekty Label i TabControl

• Przejdź do panelu Data Sources i rozwiń zakładkę Student.

• Kliknij wskazującą w dół strzałkę, rozwijając listę.

• Wybierz Details jako prezentację danych i przeciągnij na formularz na zakładkę Studenci (rys. 18).

Rys. 18 Zakładka „Studenci”

• Przejdź do panelu Data Sources i rozwiń zakładkę Przedmiot.

• Kliknij wskazującą w dół strzałkę, rozwijając listę.

• Wybierz Details jako prezentację danych i przeciągnij na formularz na zakładkę Przedmiot (rys. 19).

Rys. 19 Zakładka „Przedmioty”

• Przejdź do panelu Data Sources i rozwiń zakładkę Na jakie przedmioty jest zapisany student.

• Kliknij wskazującą w dół strzałkę, rozwijając listę.

• Wybierz DataGridView jako prezentację danych i przeciągnij na formularz na zakładkę Na jakie przedmioty uczęszczają studenci (rys.

20).

(15)

Rys. 20 Zakładka „Na jakie przedmioty uczęszczają studenci”

• Uruchom aplikację wybierając przycisk F5. Wynik skompilowanej aplikacji przedstawia rys. 21.

Rys. 21 Wynik działania aplikacji

(16)

Laboratorium rozszerzone

Zadanie 1 (czas realizacji 90 min)

Jesteś programistą w firmie National Insurance. Właśnie dowiedziałeś się od swojego szefa, że firma zarządzająca bazą AdventureWorks planuje rozszerzenie i modernizacje systemu w celu spełnienia pewnych standardów. W związku z modernizacją systemu bazodanowego najprawdopodobniej ulegną zmianie pewne metody wybierania danych w celu zapewnienia wyższego poziomu bezpieczeństwa. Dostaniesz dodatkowe procedury składowane i funkcje, które będziesz musiał wykorzystać w nowym module aplikacji klienckiej.

Zadanie, jakie przed Tobą stoi, to:

1. Podjęcie decyzji, jakie procedury składowane powinny zostać napisane dla nowego modułu bazy danych oraz jak ich użyć w aplikacji klienckiej.

2. Podjęcie decyzji, jak ma wyglądać interfejs użytkownika.

Cytaty

Powiązane dokumenty

Na komputerach zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express Edition

W programie może być zdefiniowanych więcej funkcji, ale zawsze musi istnieć funkcja o nazwie main(), gdyż pełni ona szczególna rolę w programie - od początku tej

W programie może być zdefiniowanych więcej funkcji, ale zawsze musi istnieć funkcja o nazwie main(), gdyż pełni ona szczególna rolę w programie - od początku tej

Struktura programu z kilkoma funkcjami, typy instrukcji w języku C Omawiany poprzednio program, wyświetlający tekst Witaj swiecie, składał się tylko z jednej funkcji

Kliknij PPM na nazwę projektu > Set as StartUp Project (aktualnie domyślny projekt zostanie wytłuszczony).. FORMATOWANIE KODU Edit > Advanced

Każdy wiersz (in. krotka, rekord) tabeli zawiera zestaw powiązanych danych – na temat określonej jednostki (np. pojedynczego studenta w tabeli studentów) lub określonego

ModifiedAfter dateTime Data i czas ograniczający zwracane dane do tych, które zmieniły się po tym czasie.. Opis zwracanej

 Przy podnoszeniu liczby do potęgi (głównie przy podnoszeniu do kwadratu lub sześcianu) wynik końcowy powinien mieć tyle cyfr znaczących, ile ma liczba potęgowana, np.:.. 26,83