Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00447 008295 10497465 na godz. na dobę w sumie
Visual Basic .NET. Bazy danych. Księga eksperta - książka
Visual Basic .NET. Bazy danych. Księga eksperta - książka
Autor: Liczba stron: 400
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-803-0 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> visual basic - programowanie
Porównaj ceny (książka, ebook, audiobook).

Zaprojektuj i napisz wydajne aplikacje bazodanowe,
korzystając z Visual Basic .NET

Bazy danych to podstawa większości aplikacji biznesowych. Jednak sama baza danych to nie wszystko -- należy zapewnić osobom korzystającym ze zgromadzonych w niej informacji wygodny sposób dostępu do nich. W tym celu pisane są narzędzia służące do manipulacji danymi i wyświetlania ich. Dzięki technologii .NET i możliwościom oferowanym przez język Visual Basic .NET stworzenie aplikacji korzystającej z zasobów zgromadzonych w bazie danych nie nastręcza problemów, jednak mimo to należy podejść do tego zadania w odpowiedni sposób. Schemat bazy danych, odpowiednia konstrukcja zapytań, właściwe zastosowanie obiektów komunikujących się z bazą -- to elementy, które należy wziąć pod uwagę, przystępując do pracy nad aplikacją.

Książka 'Visual Basic .NET. Bazy danych. Księga eksperta' to kompendium wiedzy dla programistów wykorzystujących Visual Basic .NET do tworzenia aplikacji opartych na bazach danych. Przedstawia zasady projektowania i pisania aplikacji WinForms, stron WebForms oraz usług Web Services w oparciu o bazę danych MS SQL Server 2000. Opisuje zasady stosowania technologii ADO.NET do połączenia aplikacji z tabelami w bazie i manipulowania zgromadzonymi w nich danymi.

Jeśli chcesz szybko i efektywnie tworzyć aplikacje bazodanowe w oparciu o technologię .NET, w tej książce znajdziesz wszystkie niezbędne do tego informacje.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK Visual Basic .NET. Bazy danych. Ksiêga eksperta Autor: Jeffrey McManus T³umaczenie: Miko³aj Szczepaniak (rozdz. 8 – 12), Grzegorz Werner (przedmowa, rozdz. 1 – 7) ISBN: 83-7197-803-0 Tytu³ orygina³u: Database Access with Visual Basic.NET Format: B5, stron: 400 Przyk³ady na ftp: 1422 kB DODAJ DO KOSZYKA DODAJ DO KOSZYKA Zaprojektuj i napisz wydajne aplikacje bazodanowe, CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl korzystaj¹c z Visual Basic .NET • Opracuj schemat bazy danych, stwórz wiêzy integralnoġci i zastosuj jêzyk SQL do manipulowania danymi • Poznaj mo¿liwoġci systemu MS SQL Server 2000 i wykorzystaj go w swoich aplikacjach • Zastosuj technologiê ADO.NET i Web Services w aplikacjach napisanych w Visual Basic .NET Bazy danych to podstawa wiêkszoġci aplikacji biznesowych. Jednak sama baza danych to nie wszystko — nale¿y zapewniæ osobom korzystaj¹cym ze zgromadzonych w niej informacji wygodny sposób dostêpu do nich. W tym celu pisane s¹ narzêdzia s³u¿¹ce do manipulacji danymi i wyġwietlania ich. Dziêki technologii .NET i mo¿liwoġciom oferowanym przez jêzyk Visual Basic .NET stworzenie aplikacji korzystaj¹cej z zasobów zgromadzonych w bazie danych nie nastrêcza problemów, jednak mimo to nale¿y podejġæ do tego zadania w odpowiedni sposób. Schemat bazy danych, odpowiednia konstrukcja zapytañ, w³aġciwe zastosowanie obiektów komunikuj¹cych siê z baz¹ — to elementy, które nale¿y wzi¹æ pod uwagê, przystêpuj¹c do pracy nad aplikacj¹. Ksi¹¿ka „Visual Basic .NET. Bazy danych. Ksiêga eksperta” to kompendium wiedzy dla programistów wykorzystuj¹cych Visual Basic .NET do tworzenia aplikacji opartych na bazach danych. Przedstawia zasady projektowania i pisania aplikacji WinForms, stron WebForms oraz us³ug Web Services w oparciu o bazê danych MS SQL Server 2000. Opisuje zasady stosowania technologii ADO.NET do po³¹czenia aplikacji z tabelami w bazie i manipulowania zgromadzonymi w nich danymi. • Schemat bazy danych, relacje, wiêzy integralnoġci i normalizacja danych • Konstruowanie zapytañ w jêzyku SQL • Dostêp do bazy z poziomu aplikacji WinForms • Zastosowanie bazy MS SQL Server 2000 w aplikacjach bazodanowych • Podstawy technologii ADO.NET • Stosowanie obiektów DataSet i DataAdapter • Korzystanie z jêzyka XML • Tworzenie us³ug WebServices Jeġli chcesz szybko i efektywnie tworzyæ aplikacje bazodanowe w oparciu o technologiê .NET, w tej ksi¹¿ce znajdziesz wszystkie niezbêdne do tego informacje. 5RKUVTGħEK 1#WVQTCEJJ  2TGFOQYCJ  4QFKCđ2QFUVCYQYGKPHQTOCELGQDCCEJFCP[EJ   Co to jest baza danych? ...................................................z...................................................z................. 18 Co to jest platforma bazy danych? ...................................................z............................................. 18 Przypadki biznesowe ...................................................z...................................................z..................... 18 Przypadek biznesowy 1.1. Prezentacja firmy Nowinki Sp. z o.o. ................................................. 18 Tabele i pola ...................................................z...................................................z.................................. 19 Projektowanie bazy danych ...................................................z...................................................z..... 19 Przypadek biznesowy 1.2. Projektowanie tabel i relacji...................................................z............. 20 Manipulowanie danymi za pomocą obiektów...................................................z................................... 22 Typy danych ...................................................z...................................................z.................................. 23 Tworzenie schematu bazy danych ...................................................z.................................................... 23 Tworzenie bazy danych za pomocą programu Visual Studio...................................................z.......... 25 Określanie indeksów i kluczy podstawowych ...................................................z............................ 28 Tworzenie diagramu bazy danych ...................................................z..............................................30 Tworzenie i modyfikowanie schematu bazy danych za pomocą programu Microsoft Visio......... 32 Relacje ...................................................z...................................................z........................................... 38 Utrzymywanie spójności danych dzięki integralności referencyjnej ............................................. 40 Testowanie integralności referencyjnej za pomocą narzędzia Server Explorer ............................. 40 Kaskadowe aktualizowanie i usuwanie danych...................................................z.......................... 42 Normalizacja...................................................z...................................................z.................................. 43 Relacje jeden do jednego...................................................z...................................................z......... 45 Relacje jeden do wielu ...................................................z...................................................z............ 46 Relacje wiele do wielu ...................................................z...................................................z............ 46 Tworzenie interfejsu użytkownika w aplikacji Windows Forms ...................................................z...... 47 Łączenie się z bazą danych i praca z rekordami ...................................................z......................... 47 Tworzenie aplikacji do przeglądania danych...................................................z.............................. 48 Wiązanie programowe...................................................z...................................................z............. 51 Kontrolki danych w .NET ...................................................z...................................................z....... 52 Aktualizowanie rekordów w przeglądarce danych ...................................................z..................... 52 Tworzenie nowych rekordów w formularzu powiązanym z danymi ............................................. 54 Usuwanie rekordów z powiązanego formularza...................................................z......................... 55 Sprawdzanie poprawności danych w powiązanym formularzu ...................................................z.. 55 Sprawdzanie poprawności na poziomie mechanizmu bazy danych............................................... 56 Podsumowanie...................................................z...................................................z............................... 57 Pytania i odpowiedzi ...................................................z...................................................z............... 57 6 Visual Basic .NET. Bazy danych. Księga eksperta 4QFKCđ-YGTGPF[KRQNGEGPKC53. J  Co to jest kwerenda?...................................................z...................................................z...................... 59 Testowanie kwerend za pomocą narzędzia Server Explorer...................................................z............. 60 Pobieranie rekordów za pomocą klauzuli SELECT...................................................z.......................... 62 Wyznaczanie źródła rekordów za pomocą klauzuli FROM...................................................z.............. 63 Określanie kryteriów za pomocą klauzuli WHERE...................................................z.......................... 64 Operatory w klauzulach WHERE...................................................z............................................... 65 Sortowanie kryteriów za pomocą klauzuli ORDER BY ...................................................z................... 67 Sortowanie w porządku malejącym...................................................z............................................ 67 Sortowanie według wielu pól ...................................................z..................................................... 68 Wyświetlanie początku lub końca zakresu za pomocą operatora TOP ................................................ 68 Kwerendy, które zwracają określony odsetek rekordów ...................................................z............ 69 Sprzęganie tabel w kwerendzie...................................................z......................................................... 69 Zapisywanie sprzężenia w języku SQL ...................................................z...................................... 70 Pobieranie dodatkowych danych za pomocą sprzężenia zewnętrznego ........................................ 71 Wykonywanie obliczeń w kwerendach ...................................................z............................................ 73 Tworzenie aliasów nazw pól za pomocą klauzuli AS...................................................z....................... 74 Kwerendy grupujące i podsumowujące dane...................................................z.................................... 75 Używanie klauzuli HAVING w celu określenia kryteriów kwerendy grupującej ......................... 76 Funkcja SUM ...................................................z...................................................z.......................... 77 Inne funkcje agregacyjne SQL-a ...................................................z................................................ 77 Kwerendy składające ...................................................z...................................................z..................... 79 Podkwerendy ...................................................z...................................................z................................. 79 Manipulowanie danymi za pomocą SQL...................................................z..........................................80 Polecenia aktualizacji ...................................................z...................................................z.............. 81 Polecenia usunięcia ...................................................z...................................................z................. 82 Polecenia wstawienia ...................................................z...................................................z.............. 82 Tworzenie tabel za pomocą instrukcji SELECT INTO ...................................................z.............. 83 Język definiowania danych...................................................z...................................................z............ 83 Tworzenie elementów bazy danych za pomocą polecenia CREATE ............................................ 84 Dodawanie ograniczeń do tabel...................................................z.................................................. 84 Tworzenie indeksu za pomocą polecenia CREATE INDEX...................................................z...... 85 Usuwanie tabel i indeksów za pomocą polecenia DROP ...................................................z........... 86 Modyfikowanie definicji tabeli za pomocą polecenia ALTER ...................................................z..... 86 Podsumowanie...................................................z...................................................z............................... 87 Pytania i odpowiedzi ...................................................z...................................................z............... 87 4QFKCđ53.5GTXGTōYRTQYCFGPKG   Konfigurowanie i uruchamianie oprogramowania Microsoft SQL Server 2000 ................................. 91 Wymagania instalacyjne oprogramowania SQL Server 2000...................................................z....... 92 Instalacja oprogramowania SQL Server 2000 ...................................................z............................ 92 Uruchamianie i zatrzymywanie SQL Servera za pomocą programu SQL Service Manager ......... 95 Określanie sposobu uruchamiania SQL Servera...................................................z......................... 96 Podstawowe informacje o obsłudze oprogramowania SQL Server 2000 ............................................ 96 Uruchamianie programu SQL Server Enterprise Manager...................................................z......... 97 Tworzenie bazy danych za pomocą programu SQL Enterprise Manager...................................... 98 Tworzenie tabel w bazie danych SQL Servera ...................................................z......................... 100 Dostęp do bazy danych za pomocą programu SQL Query Analyzer........................................... 106 Spis treści 7 Sterowanie dostępem do danych za pomocą widoków...................................................z............. 110 Tworzenie i uruchamianie procedur składowanych ...................................................z................. 114 Wyświetlanie tekstu istniejącego widoku lub procedury składowanej ........................................ 118 Tworzenie wyzwalaczy ...................................................z...................................................z......... 119 Przypadek biznesowy 3.1. Tworzenie procedury wyzwalanej, która umożliwia wyszukiwanie wyrazów o podobnej wymowie ...................................................z..................... 120 Zarządzanie kontami i bezpieczeństwem za pomocą programu SQL Server Enterprise Manager...122 Określanie atrybutów bezpieczeństwa za pomocą programu SQL Query Analyzer.................... 128 Usuwanie obiektów z bazy danych ...................................................z.......................................... 130 Przypadek biznesowy 3.2. Generowanie skryptu tworzącego bazę danych ................................ 131 Podsumowanie...................................................z...................................................z............................. 146 Pytania i odpowiedzi ...................................................z...................................................z............. 146 4QFKCđ# 10 6ōFQUVCYE[FCP[EJ  Przegląd technologii ADO.NET ...................................................z..................................................... 149 Motywacja i filozofia ...................................................z...................................................z............ 150 Porównanie ADO.NET z klasyczną technologią ADO (ADO 2.X) ................................................. 151 Obiekty ADO.NET w ogólnej strukturze .NET Framework ...................................................z.... 151 Interfejsy aplikacyjne ...................................................z...................................................z............ 152 Przegląd obiektów dostawczych .NET ...................................................z........................................... 153 SqlClient...................................................z...................................................z................................ 153 OleDb ...................................................z...................................................z.................................... 153 Odbc ...................................................z...................................................z...................................... 153 Kluczowe obiekty...................................................z...................................................z.................. 154 Obiekt Connection...................................................z...................................................z....................... 155 Obiekt Command...................................................z...................................................z......................... 159 Używanie obiektu Command w połączeniu z parametrami i procedurami składowanymi.......... 160 Wykonywanie poleceń ...................................................z...................................................z.......... 163 Obiekt DataReader ...................................................z...................................................z...................... 169 Używanie komponentów projektowych Connection i Command...................................................z... 172 Inne obiekty dostawców danych...................................................z..................................................... 173 Przypadek biznesowy 4.1. Pisanie procedury, która archiwizuje wszystkie zamówienia z określonego roku ...................................................z...................................................z............. 174 Podsumowanie...................................................z...................................................z............................. 179 Pytania i odpowiedzi ...................................................z...................................................z............. 179 4QFKCđ# 10 6ōQDKGMV CVC5GV J  Zastosowania i komponenty obiektu DataSet ...................................................z................................. 181 Wypełnianie i modyfikowanie obiektu DataSet ...................................................z............................. 183 Definiowanie schematów DataTable...................................................z........................................ 183 Dodawanie danych do obiektu DataTable ...................................................z................................ 187 Aktualizowanie obiektu DataSet ...................................................z..............................................188 Dostęp do danych w obiekcie DataTable ...................................................z................................. 191 Relacje między tabelami...................................................z...................................................z........ 196 Ograniczenia tabel...................................................z...................................................z................. 199 Korzystanie z komponentu DataSet...................................................z................................................ 203 Podsumowanie...................................................z...................................................z............................. 209 Pytania i odpowiedzi ...................................................z...................................................z............. 209 8 Visual Basic .NET. Bazy danych. Księga eksperta 4QFKCđ# 10 6ōQDKGMV CVC#FCRVGT   Wypełnianie obiektu DataSet ze źródła danych...................................................z.............................. 212 Aktualizowanie źródła danych...................................................z........................................................ 216 Ustawianie poleceń aktualizacyjnych...................................................z....................................... 218 Przypadek biznesowy 6.1. Łączenie wielu powiązanych tabel...................................................z. 231 Podsumowanie...................................................z...................................................z............................. 236 Pytania i odpowiedzi ...................................................z...................................................z............. 236 4QFKCđ# 10 6ōFQFCVMQYGHWPMELGKVGEJPKMK  Wykrywanie konfliktów współbieżności...................................................z........................................237 Odwzorowania nazw tabel i kolumn...................................................z............................................... 241 Obiekty DataView ...................................................z...................................................z....................... 243 Przypadek biznesowy 7.1. Łączenie danych pochodzących z różnych źródeł............................. 249 Obiekty DataSet ze ścisłą kontrolą typów ...................................................z...................................... 253 Podsumowanie...................................................z...................................................z............................. 258 Pytania i odpowiedzi ...................................................z...................................................z............. 258 4QFKCđ2TQLGMV[DCFCP[EJY8KUWCN$CUKE0 6  Tworzenie projektów baz danych ...................................................z................................................... 259 Odwołania do baz danych...................................................z...................................................z............ 261 Skrypty ...................................................z...................................................z........................................ 262 Skrypty tworzące...................................................z...................................................z................... 263 Skrypty zmieniające ...................................................z...................................................z.............. 266 Wykonywanie skryptów...................................................z...................................................z........ 269 Pliki poleceń...................................................z...................................................z.......................... 270 Kwerendy ...................................................z...................................................z.................................... 275 Podsumowanie...................................................z...................................................z............................. 278 Pytania i odpowiedzi ...................................................z...................................................z............. 279 4QFKCđ,ú[M:/.KRNCVHQTOC0 6J  Przegląd technologii XML ...................................................z...................................................z.......... 282 Rodzina technologii XML...................................................z...................................................z..... 284 XML i dostęp do danych ...................................................z...................................................z....... 286 Klasy obsługujące XML na platformie .NET ...................................................z................................. 287 Praca w oparciu o obiektowy model dokumentu...................................................z...................... 288 Stosowanie języka XPATH ...................................................z...................................................z... 289 Rozszerzanie systemu SQL Server o SQLXML 3.0 oraz IIS ...................................................z......... 292 Instalacja i konfiguracja rozszerzenia SQLXML 3.0 ...................................................z............... 292 Konfigurowanie wyników ...................................................z...................................................z..... 299 Stosowanie standardów XML, XSLT oraz SQLXML podczas tworzenia raportów ......................... 299 Podsumowanie...................................................z...................................................z............................. 301 Pytania i odpowiedzi ...................................................z...................................................z............. 302 4QFKCđ6GEJPQNQIKC# 10 6KLú[M:/.   Podstawowe operacje odczytu i zapisu dokumentów XML ...................................................z........... 306 Odczytywanie dokumentów XML ...................................................z........................................... 306 Zapisywanie dokumentów XML ...................................................z.............................................. 310 Format DiffGrams ...................................................z...................................................z................. 316 Przykład biznesowy 10.1. Przygotowywanie plików XML dla partnerów biznesowych ............ 322 Spis treści 9 Tworzenie obiektu XmlReader na podstawie obiektu Command...................................................z... 335 Stosowanie obiektu XmlDataDocument...................................................z......................................... 337 Podsumowanie...................................................z...................................................z............................. 340 Pytania i odpowiedzi ...................................................z...................................................z............. 340 4QFKCđ5VTQP[9GD(QTO#RNKMCELGDCFCP[EJ Y[MQT[UVWLæEGVGEJPQNQIKú#520 6 J  Przegląd technologii ASP.NET ...................................................z...................................................... 343 Kontrolki HTML kontra kontrolki serwera ...................................................z.............................. 344 Dodatkowe własności technologii ASP.NET ...................................................z........................... 345 Uzyskiwanie dostępu do bazy danych za pośrednictwem ASP.NET................................................. 346 Dodawanie użytkownika ASPNET do grupy użytkowników systemu SQL Server .................... 347 Opcja TRUSTED_CONNECTION w praktyce ...................................................z....................... 353 Praca z kontrolką DataGrid ...................................................z...................................................... 356 Poprawa wydajności aplikacji baz danych opartych na technologii ASP.NET za pomocą procedur składowanych ...................................................z.............................................358 Podsumowanie...................................................z...................................................z............................. 361 Pytania i odpowiedzi ...................................................z...................................................z............. 361 4QFKCđ7UđWIK9GD5GTXKEGUKVGEJPQNQIKGYCTUVYæRQħTGFPKæ  Stosowanie warstwy pośredniej dla zapewnienia logiki prezentacji.................................................. 364 Wykorzystanie danych w warstwie pośredniej ...................................................z............................. 367 Tworzenie komponentów wielokrotnego użytku dla warstwy pośredniej ................................... 368 Wykorzystywanie komponentów pochodzących z innej aplikacji ......................................... 371 Udostępnianie obiektów za pośrednictwem usług Web Services ...................................................z... 373 Udostępnianie istniejącego obiektu za pośrednictwem usługi Web Service................................ 375 Programowy dostęp do usług Web Services..................................................z.............................. 377 Zakończenie...................................................z...................................................z................................. 380 Podsumowanie...................................................z...................................................z............................. 380 Pytania i odpowiedzi ...................................................z...................................................z............. 380 5MQTQYKF J  4QFKCđ # 10 6 ōFQUVCYE[FCP[EJ Czasem można odnieść wrażenie, że kiedy programista budzi się rano, już czeka na niego nowy (i odmienny) przygotowany przez Microsoft model dostępu do baz danych. W niniej- szym rozdziale skupimy się na jego najnowszym wcieleniu — ADO.NET. Najpierw wyjaśnimy, dlaczego powstał ten model dostępowy i zastanowimy się, czy jego wpro- wadzenie było uzasadnione. Następnie przedstawimy przegląd modelu ADO.NET i jego ogólnej architektury. Celem tego rozdziału jest przygotowanie Czytelników do pracy z ADO.NET. Musimy zatem omówić podstawy jego działania i dokładniej przyjrzeć się najważniejszym obiektom dostawcy danych ADO.NET — QPPGEVKQP, QOOCPF, 2CTCOGVGT i CVC4GCFGT. W roz- działach 5., 6. i 7. zajmiemy się bardziej zaawansowanymi i interesującymi obiektami, które oferuje ADO.NET. Wszystkie one współdziałają z obiektem CVC5GV — centralnym elementem technologii ADO.NET. 2TGINæFVGEJPQNQIKK# 10 6 Ci, którzy już od pewnego czasu tworzą aplikacje bazodanowe za pomocą Visual Basica, przywykli do tego, że Microsoft co kilka lat wprowadza nowy, ulepszony model dostępu do danych. Oprócz kolejnego trzyliterowego skrótu pojawia się nowy interfejs API i model obiektowy, które trzeba poznać i opanować. W ostatnich latach programiści uczyli się kolejno modeli ODBC, DAO, RDO i ADO, a obecnie mają do czynienia z ADO.NET. Po wprowadzeniu każdej nowej technologii programista musi przestudiować jej cele i zało- żenia projektowe, a następnie zadać sobie pytanie: czy ja i mój zespół powinniśmy prze- stawić się na tę technologię? W większości przypadków odpowiedź brzmi twierdząco, chyba że programista pracuje nad projektem, którego obecne i przyszłe wymagania nie mają związku z nowymi cechami i funkcjami technologii. Zdarza się to rzadko, choć trzeba przyznać, że dostępność technologii RDO (Remote Data Object) rzeczywiście nie miała wpływu na projekty wykorzystujące mechanizm JET (MDB) (technologia DAO jest ciągle lepszą metodą dostępu do baz danych MDB). 150 Visual Basic .NET. Bazy danych. Księga eksperta /QV[YCELCKHKNQQHKC Zadajmy więc zasadnicze pytanie: do czego potrzebny jest nowy model dostępu do danych? Można na nie odpowiedzieć sloganem reklamowym Toyoty z lat 70.: „Dostaliście, o co prosiliście”. ADO.NET oferuje wiele rzeczy, których programiści domagali się od czasu wprowadzenia technologii ADO. To prawda, że z czasem dodano do ADO funkcje takie jak rozłączone zestawy rekordów oraz obsługa XML. Problem polega na tym, że funkcje te są właśnie dodatkami. Uzupełniają one pierwotny projekt, więc są niekompletne i nie- wygodne w użyciu. Klasyczna (oparta na modelu COM) technologia ADO zawiera pojedynczy obiekt, TGEQTF UGV, którego używa się do najróżniejszych celów. W zależności od różnych parametrów konfiguracyjnych — takich jak typ kursora, lokalizacja kursora i typ blokowania — obiekt TGEQTFUGV działa inaczej i pełni różne funkcje. W ADO.NET poszczególne funkcje zostały przypisane oddzielnym obiektom, których można używać niezależnie albo w połączeniu z innymi. Dzięki temu programiści mogą korzystać z obiektów zoptymalizowanych pod kątem konkretnej funkcji i niezawierają- cych dodatkowego „bagażu”. Pomimo to różne obiekty dobrze ze sobą współpracują, zapewniając większą funkcjonalność. 1DUđWICCRNKMCELKTQRTQUQP[EJKTQđæEQP[EJ ADO.NET oferuje doskonałą i elastyczną obsługę aplikacji rozproszonych między wie- loma komputerami (serwerami baz danych, serwerami aplikacji i klienckimi stacjami roboczymi). Szczególnie godna uwagi jest obsługa aplikacji rozłączonych (trój- lub wie- lowarstwowych), która minimalizuje współbieżne obciążenie i blokowanie zasobów w serwerze baz danych. Rezultatem jest większa skalowalność — możliwość obsługi większej liczby użytkowników jednocześnie poprzez stopniową rozbudowę sprzętu. Jest to istotne zwłaszcza w aplikacjach WWW. 2GđPCQDUđWICLú[MC:/. Choć klasyczna technologia ADO może zapisywać i odczytywać dane w formacie XML, to rzeczywisty format jest raczej niezwykły i niewygodnie się z nim pracuje. Ponadto obsługę XML dodano do ADO na stosunkowo późnym etapie, więc jest ona dość ogra- niczona i nieelastyczna. W przypadku ADO.NET obsługa XML od początku stanowiła zasadniczy element projektu. Filozofia ADO.NET głosi, że „dane to dane” — bez względu na źródło ich pochodzenia można przetwarzać je jako dane relacyjne albo hierarchiczne w zależności od potrzeb albo w zależności od używanego narzędzia programistycznego. Co więcej, języka XML używa się jako formatu transmisji danych między różnymi war- stwami i komputerami. Nie tylko eliminuje to problem przepuszczania wywołań COM przez zapory sieciowe, ale również ułatwia współdzielenie danych z aplikacjami, które działają na platformach innych niż Windows (ponieważ każdy system może przetwarzać tekstowe dane XML). Rozdział 4.  ADO.NET — dostawcy danych 151 +PVGITCELC0 6(TCOGYQTM ADO.NET nie jest po prostu następną wersją ADO. Technologia ta została zaprojekto- wana i zaimplementowana jako element .NET Framework. Oznacza to, że działa jako kod zarządzany (ang. Managed Code), a wszystkie jej obiekty zachowują się zgodnie z tym, czego przywykliśmy oczekiwać od obiektów .NET. Jest także częścią standardo- wego pakietu .NET Framework, co pozwala uniknąć kłopotów z wersjami, z którymi programiści ADO musieli zmagać się w przeszłości. 2TQITCOQYCPKGYUV[NW# 1 Choć technologię ADO.NET zaprojektowano i zaimplementowano jako część .NET Fra- mework, wiele jej elementów powinno wyglądać znajomo dla programistów klasycznej technologii ADO. Nawet w przypadku funkcji nowych lub zrealizowanych w odmienny sposób doświadczony programista ADO będzie mógł wykorzystać nabytą wcześniej wiedzę, aby szybko zrozumieć i zastosować obiekty ADO.NET. 2QTÎYPCPKG# 10 6MNCU[EPæVGEJPQNQIKæ# 1 # 1: Różnice między ADO.NET a klasyczną technologią ADO można streścić w następujący sposób:  Klasyczna technologia ADO została zaprojektowana pod kątem dostępu z połączeniem i jest związana z fizycznym modelem danych. Technologia ADO.NET została zaprojektowana z myślą o dostępie bez połączenia i pozwala na logiczne modelowanie danych.  W ADO.NET istnieje wyraźne rozróżnienie między modelem dostępu z połączeniem a modelem dostępu bez połączenia.  W ADO.NET nie ma właściwości WTUQT6[RG, WTUQT.QECVKQP ani .QEM6[RG. Technologia ta używa tylko statycznych kursorów klienckich i blokowania optymistycznego.  Zamiast używać pojedynczego, uniwersalnego obiektu, w ADO.NET funkcje klasycznego obiektu TGEQTFUGV podzielono na mniejsze, bardziej wyspecjalizowane obiekty, takie jak CVC4GCFGT, CVC5GV i CVC6CDNG.  ADO.NET umożliwia manipulowanie danymi XML, a nie tylko wykorzystywanie języka XML jako formatu wejścia-wyjścia.  ADO.NET zapewnia ścisłą kontrolę typów w obiektach CVC5GV zamiast używania typu 8CTKCPV do obsługi wszystkich pól. Ułatwia to wykrywanie błędów w czasie pisania kodu i zwiększa wydajność aplikacji. 1DKGMV[# 10 6YQIÎNPGLUVTWMVWTG0 6(TCOGYQTM Na rysunku 4.1 przedstawiono miejsce klas ADO.NET w ogólnej strukturze .NET Fra- mework. Na dole znajduje się Common Language Framework (CLR), czyli infrastruktura 152 Visual Basic .NET. Bazy danych. Księga eksperta 4[UWPGM Klasy ADO.NET w strukturze .NET Framework uruchomieniowa wszystkich aplikacji .NET (bez względu na język, w którym zostały napisane). Środowisko CLR zapewnia wspólny system plików, zarządzanie pamięcią i czasem „życia” obiektów. Następna warstwa logiczna, która korzysta z usług CLR, to zbiór podstawowych klas systemowych. To właśnie te klasy zapewniają bogaty zestaw funkcji, z których mogą korzystać aplikacje .NET. Na rysunku 4.1 pokazano tylko niektóre klasy z biblioteki .NET Framework. W praktyce warstwa ta jest nowym interfejsem programistycznym (ang. application programming interface, API) systemu Windows. W przeszłości funkcje systemu Windows były dostępne za pośrednictwem interfejsu Windows API, który skła- dał się z wielu niespójnych wywołań systemowych. W technologii .NET dostęp do tych (i nowych) funkcji odbywa się za pośrednictwem właściwości i metod eksponowanych przez podstawowe klasy systemowe. Dzięki takiemu podejściu pisanie aplikacji Windows jest bardziej spójne i komfortowe bez względu na to, czy są to aplikacje stacjonarne, inter- netowe czy usługi Web Services. Warstwa ta zawiera kilka przestrzeni nazw (grup klas i innych definicji) związanych z dostępem do danych: 5[UVGO CVC, 5[UVGO CVC1NG $ oraz 5[UVGO CVC5SN NKGPV. W dalszej części niniejszego rozdziału — oraz w rozdziałach 5., 6. i 7. — przyjrzymy się bliżej wielu klasom i definicjom zawartym w tych przestrzeniach nazw. +PVGTHGLU[CRNKMCE[LPG Na najwyższym poziomie pojawia się zróżnicowanie między typami aplikacji, które mogą budować programiści. Istnieją klasy i kontrolki do budowania (klasycznych) aplikacji Windows opartych na formularzach (Windows Forms), inne klasy i kontrolki do budowa- nia aplikacji internetowych opartych na przeglądarce (Web Forms), i kolejny zbiór klas do budowania usług Web Services. Wszystkie one korzystają jednak ze wspólnej biblio- teki klas logiki aplikacyjnej — podstawowych klas systemowych. Wiemy już mniej więcej, jakie miejsce zajmują klasy ADO.NET w ogólnej strukturze .NET Framework, więc przyjrzyjmy się bliżej obiektom ADO.NET. Rozdział 4.  ADO.NET — dostawcy danych 153 2TGINæFQDKGMVÎYFQUVCYE[EJ0 6 Pomimo nacisku na model dostępu bez połączenia nadal konieczne jest łączenie się z fizyczną bazą danych w celu pobrania, zaktualizowania, wstawienia i (lub) usunięcia danych. Oprogramowanie, które łączy się i komunikuje z fizyczną bazą danych, w ter- minologii ADO.NET określa się mianem dostawcy danych .NET (ang .NET Data Provi- der). Dostawca danych .NET to odpowiednik dostawcy OLEDB albo sterownika ODBC. Dostawca danych składa się z kilku obiektów realizujących funkcje zdefiniowane przez klasy i interfejsy, z których się wywodzą. Obecnie dostępnych jest trzech dostawców danych ADO.NET, każdy zdefiniowany we własnej przestrzeni nazw. W nazwach obiektów należących do tych przestrzeni nazw używa się przedrostków 1NG D, 5SN i 1FDE. Kiedy piszemy o tych obiektach w sposób ogólny, używamy nazwy obiektu bez żadnego przedrostka. 5SN NKGPV Dostawca danych 5SN NKGPV jest zoptymalizowany pod kątem współpracy z SQL Serve- rem 7.0 i jego nowszymi wersjami. Osiąga większą wydajność, ponieważ (1) komuni- kuje się z bazą danych za pośrednictwem natywnego protokołu Tabular Data Stream (TDS), a nie protokołu OLEDB, który musi odwzorowywać interfejs OLEDB na proto- kół TDS; (2) eliminuje dodatkowe koszty związane z usługami zgodności COM; (3) nie oferuje funkcji, które nie są obsługiwane przez SQL Server. Obiekty tego dostawcy są zawarte w przestrzeni nazw 5[UVGO CVC5SN NKGPV. 1NG D Dostawca danych 1NG D uzyskuje dostęp do danych za pośrednictwem istniejącego natyw- nego dostawcy OLEDB (COM) oraz usług zgodności COM. Używa się go do obsługi baz danych innych niż SQL Server 7.0 i jego nowsze wersje. Zapewnia dostęp do każdej bazy danych, dla której napisano dostawcę OLEDB. Obiekty tego dostawcy są zawarte w przestrzeni nazw 5[UVGO CVC1NG D. 1FDE Dostawcy danych 1FDE używa się do obsługi baz danych, które nie mają własnego dostawcy .NET, ani dostawcy OLEDB (COM). Ponadto w przypadku niektórych baz danych sterow- nik ODBC może zapewniać większą wydajność niż sterownik OLEDB, więc warto prze- prowadzić testy, aby ustalić, który z nich lepiej odpowiada wymaganiom konkretnej apli- kacji. Obiekty tego dostawcy są zawarte w przestrzeni nazw /KETQUQHV CVC1FDE. Pisanie dostawcy danych ODBC opóźniło się nieco w stosunku do reszty .NET Framework i Visual Studia .NET. Nie został on więc dołączony do pierwotnego wydania Visual Studia .NET, ale można go pobrać z witryny WWW Microsoftu. Warto też sprawdzać, czy nie pojawili się nowi dostawcy danych .NET. 154 Visual Basic .NET. Bazy danych. Księga eksperta Obecnie w witrynie WWW dostępny jest również dostawca danych Oracle .NET. Dostawcy ODBC i Oracle są dołączeni do wersji 1.1 .NET Framework dostarczanej wraz z Visual Studiem .NET 2003. W rezultacie przestrzeń nazw dostawcy ODBC zmieni się z: /KETQUQHV CVC1FDE na: 5[UVGO CVC1 $ W przykładach zamieszczonych w niniejszym rozdziale używana jest wersja 1.0 dostawcy ODBC. Ci, którzy korzystają już z wersji 1.1, powinni zmienić przestrzeń nazw w pokazany wyżej sposób. -NWEQYGQDKGMV[ Każdy dostawca danych zawiera cztery kluczowe obiekty, które są wymienione w tabeli 4.1. 6CDGNC Kluczowe obiekty dostawców danych 1DKGMV -TÎVMKQRKU QPPGEVKQP Nawiązuje połączenie ze specyficznym źródłem danych QOOCPF CVC4GCFGT CVC#FCRVGT Wykonuje polecenie w źródle danych; eksponuje kolekcję obiektów 2CTCOGVGT oraz metody do wykonywania różnych typów poleceń Zwraca jednokierunkowy, przeznaczony tylko do odczytu strumień danych ze źródła danych Tworzy pomost między obiektem CVC5GV a źródłem danych, aby umożliwić pobieranie i zapisywanie danych Każdy obiekt wywodzi się z uniwersalnej klasy bazowej i implementuje uniwersalne interfejsy, ale zapewnia własną, specyficzną implementację. Na przykład obiekty 5SN CVC å#FCRVGT, 1NG D CVC#FCRVGT i 1FDE CVC#FCRVGT wywodzą się z klasy D CVC#FCRVGT i implementują te same interfejsy. Jednakże każdy z nich implementuje je inaczej, na użytek odpowiedniego źródła danych. Przestrzeń nazw 5[UVGO CVC1NG D zawiera następujące obiekty:     1NG D QPPGEVKQP, 1NG D QOOCPF, 1NG D CVC4GCFGT, 1NG D CVC#FCRVGT. Przestrzeń nazw 5[UVGO CVC5SN NKGPV zawiera następujące obiekty:     5SN QPPGEVKQP, 5SN QOOCPF, 5SN CVC4GCFGT, 5SN CVC#FCRVGT. Rozdział 4.  ADO.NET — dostawcy danych 155 Wreszcie przestrzeń nazw /KETQUQHV CVC1FDE zawiera następujące obiekty:     1FDE QPPGEVKQP, 1FDE QOOCPF, 1FDE CVC4GCFGT, 1FDE CVC#FCRVGT. Wszyscy przyszli dostawcy danych będą mieć własne przestrzenie nazw i będą imple- mentować wymagane obiekty w taki sam sposób. 1DKGMV QPPGEVKQP Obiekt ADO.NET QPPGEVKQP przypomina znany i lubiany obiekt QPPGEVKQP z klasycznej technologii ADO. Służy do nawiązywania połączenia z konkretnym źródłem danych z wykorzystaniem nazwy użytkownika i hasła określonych przez łańcuch połączeniowy (ang. connection string). Można dostosować połączenie do własnych potrzeb, określając odpowiednie parametry i wartości w łańcuchu połączeniowym. Obiekt QOOCPF (albo CVC#FCRVGT) może następnie użyć tego połączenia, aby wykonać żądane operacje na źródle danych. W przeciwieństwie do obiektu QPPGEVKQP z ADO 2.X, obiekt QPPGEVKQP z ADO.NET nie ma metod ZGEWVG ani 1RGP5EJGOC. Polecenia SQL można wykonywać tylko za pomocą obiektów QOOCPF albo CVC#FCRVGT. Odpowiednikiem metody 1RGP5EJGOC jest metoda )GV1NG D5EJGOC6CDNG obiektu 1NG D QPPGEVKQP. Choć pochodne obiekty 1NG D QPPGEVKQP, 5SN QPPGEVKQP i 1FDE QPPGEVKQP implemen- tują te same interfejsy, istnieją między nimi różnice. Odmienne są, na przykład, formaty łańcuchów połączeniowych. Format łańcucha 1NG D QPPGEVKQP zaprojektowano tak, aby odpowiadał (z niewielkimi wyjątkami) standardowemu łańcuchowi połączeniowemu OLEDB. Format łańcucha 1FDE QPPGEVKQP jest zbliżony do standardowego formatu łań- cucha połączeniowego ODBC, choć nie identyczny. Format łańcucha 5SN QPPGEVKQP różni się od dwóch pozostałych, ponieważ zawiera parametry dotyczące tylko SQL Servera 7.0 i jego nowszych wersji. Co więcej, niektóre obiekty zawierają dodatkowe właściwości. Na przykład obiekt 1NG D QPPGEVKQP ma właściwość 2TQXKFGT, za pomocą której określa się dostawcę OLEDB, a obiekt 1FDE QPPGEVKQP ma właściwość TKXGT, za pomocą której określa się sterownik ODBC. Obiekt 5SN QPPGEVKQP nie ma żadnej z tych właściwości, ponieważ jego źródło danych jest z góry określone (SQL Server). Ma natomiast właściwości 2CEMGV5KG i 9QTMUVCVKQP+ specyficzne dla SQL Servera i nieobsługiwane przez dwa pozostałe typy połączeń. Dość teorii; przejdźmy wreszcie do pisania kodu! Wszystkie kluczowe obiekty dostaw- ców danych zostaną zaprezentowane na prostych, konkretnych przykładach. Zaczniemy od poniższego przykładowego programu i będziemy stopniowo go rozwijać. 156 Visual Basic .NET. Bazy danych. Księga eksperta   Uruchomić Visual Studio .NET. Utworzyć nowy projekt Visual Basica — Windows Application.  Nadać projektowi nazwę 1DKGMV[ QUVCYE[ CP[EJ.  Określić ścieżkę do folderu, w którym zostaną zapisane pliki projektu.  Powiększyć formularz (QTO.  W oknie właściwości formularza (QTO ustawić jego właściwość 6GZV na 1DKGMV[ FQUVCYE[FCP[EJ.  Przeciągnąć przycisk z zakładki Windows Forms przybornika do górnego lewego rogu formularza.  W oknie właściwości przycisku ustawić właściwość 0COG na EOF QPPGEVKQP, a właściwość 6GZV na 2QđæEGPKG.  Przeciągnąć pole tekstowe z zakładki Windows Forms przybornika na prawą stronę formularza.  W oknie właściwości pola tekstowego ustawić właściwość 0COG na VZV4GUWNVU, właściwość /WNVKNKPG na 6TWG, a właściwość 5ETQNN$CTU na $QVJ.  Powiększyć pole tekstowe tak, aby pokrywało mniej więcej 80 procent obszaru formularza. Po wykonaniu powyższych czynności formularz powinien wyglądać tak jak na rysunku 4.2. 4[UWPGM Formularz Form1 w projekcie ObiektyDostawcowDanych Teraz należy przełączyć się do widoku kodu formularza i dodać poniższe wiersze na górze pliku. Powodują one zaimportowanie przestrzeni nazw, których będziemy używać podczas pisania przykładowych aplikacji w niniejszym rozdziale: +ORQTVU5[UVGO CVC +ORQTVU5[UVGO CVC5SN NKGPV +ORQTVU5[UVGO CVC1NG D +ORQTVU/KETQUQHV CVC1FDE Rozdział 4.  ADO.NET — dostawcy danych 157 Zwróćmy uwagę na uniwersalne klasy i definicje ADO.NET oraz oddzielną przestrzeń nazw każdego dostawcy danych. Edytor Visual Studia może nie rozpoznać przestrzeni nazw /KETQUQHV CVC1FDE, ponieważ w rzeczywistości jest to dodatek do podstawowego wydania produktu. W takim przypadku należy wykonać poniższe czynności:  Pobrać plik instalacyjny dostawcy danych 1FDE z witryny WWW Microsoftu i zainstalować go w komputerze.  W oknie Solution Explorer kliknąć prawym przyciskiem myszy węzeł References projektu 1DKGMV[ QUVCYEQY CP[EJ.   Z podręcznego menu wybrać polecenie Add Reference. Na karcie .NET okna dialogowego Add Reference przewinąć w dół listę komponentów i odszukać pozycję Microsoft.Data.Odbc.dll.  Kliknąć dwukrotnie pozycję Microsoft.Data.Odbc.dll, aby dodać ją do listy Selected Components na dole okna dialogowego.  Kliknąć przycisk OK, aby zamknąć okno dialogowe. Jeśli z jakichś przyczyn nie zostanie rozpoznana któraś z pozostałych przestrzeni nazw, trzeba będzie dodać odwołanie do biblioteki System.Data.dll. W tym celu należy wykonać czynności 2 – 6, a w punkcie 4. zamienić nazwę Microsoft.Data.Odbc.dll na System.Data.dll . 1 Teraz w procedurze obsługi zdarzenia DVP QPPGEVKQPA NKEM należy wpisać kod przed- stawiony na listingu 4.1, który otwiera połączenie z bazą danych RWDU w SQL Serverze. Kod ten wyświetla stan połączenia przed próbą nawiązania połączenia i po niej. .KUVKPI Kod, który otwiera połączenie z bazą danych i wyświetla jego stan 2TKXCVG5WDDVP QPPGEVKQPA NKEM $[8CNUGPFGT#U5[UVGO1DLGEVA $[8CNG#U5[UVGO XGPV#TIU *CPFNGUA DVP QPPGEVKQP NKEM  Tworzenieinstancji obiektu Connection  KOEPP#U5SN QPPGEVKQP0GY5SN QPPGEVKQP  Ustawianie łańcucha połączeniowego EPP QPPGEVKQP5VTKPIUGTXGTNQECNJQUVWKFUCFCVCDCUGRWDU VZV4GUWNVU NGCT  Wyświetlanie stanu połączenia +H EPP5VCVG5[UVGO CVC QPPGEVKQP5VCVG1RGP 6JGP VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVQVYCTVG  NUG VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVCOMPKúVG  PF+H VZV4GUWNVU6GZVVZV4GUWNVU6GZV QPVTQN JCTU T.H QPVTQN JCTU T.H  Otwieranie połączenia VZV4GUWNVU6GZVVZV4GUWNVU6GZV1VYKGTCPKGRQđæEGPKCDCæFCP[EJA  QPVTQN JCTU T.H QPVTQN JCTU T.H EPP1RGP n 1 Użytkownicy Visual Studia .NET 2003 powinni zamienić przestrzeń nazw /KETQUQHV CVC1FDE na 5[UVGO CVC1FDE — przyp. tłum. 158 Visual Basic .NET. Bazy danych. Księga eksperta  Wyświetlanie stanu połączenia +H EPP5VCVG5[UVGO CVC QPPGEVKQP5VCVG1RGP 6JGP VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVQVYCTVG  NUG VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVCOMPKúVG  PF+H VZV4GUWNVU6GZVVZV4GUWNVU6GZV QPVTQN JCTU T.H PF5WD Nową przydatną funkcją VB.NET jest możliwość automatycznego uzyskiwania tekstowej reprezentacji wartości wyliczeniowej (GPWO) zamiast pisania procedury, która wykonuje instrukcję UGNGEVECUG na wszystkich możliwych wartościach wyliczenia. Typy wyliczane są obiektami i dziedziczą metodę 6Q5VTKPI, która zwraca łańcuch odpowiadający bieżącej wartości wyliczenia. Na listingu 4.1 można zastąpić jednym wierszem instrukcje +H NUG, które wyświetlają stan połączenia. Zamiast: Wyświetlanie stanu połączenia +H EPP5VCVG5[UVGO CVC QPPGEVKQP5VCVG1RGP 6JGP VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVQVYCTVG NUG VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVCOMPKúVG PF+H można napisać: Wyświetlanie stanu połączenia VZV4GUWNVU6GZVVZV4GUWNVU6GZV2QđæEGPKGLGUVYUVCPKGA EPP5VCVG6Q5VTKPI QPVTQN JCTU T.H Po uruchomieniu projektu 1DKGMV[ QUVCYEQY CP[EJ i kliknięciu przycisku Połączenie w polu tekstowym powinny ukazać się komunikaty, że połączenie jest zamknięte, otwie- rane, a wreszcie otwarte (zobacz rysunek 4.3). 4[UWPGM Wyniki otwierania połączenia za pomocą kodu z listingu 4.3. Podczas pisania kodu prawdziwych aplikacji trzeba wybrać i wdrożyć strategię obsługi błędów w poszczególnych procedurach i operacjach. Taka strategia zwykle opiera się na bloku 6T[ CVEJ. Zwykle nie dołączamy tego kodu do przykładów, ponieważ skupiamy się na programowaniu baz danych, a nie na ogólnych aspektach programowania w VB.NET. Rozdział 4.  ADO.NET — dostawcy danych 159 1DKGMV QOOCPF Obiekt ADO.NET QOOCPF również powinien wydawać się znajomy doświadczonym programistom ADO 2.X. Podobnie jak obiekt ADO.NET QPPGEVKQP, przypomina on swojego poprzednika z ADO 2.X. Obiekt ten umożliwia wydawanie poleceń źródłu danych oraz pobieranie danych i (lub) wyników (jeśli polecenie zwraca jakieś wyniki). Zgodnie z oczekiwaniami obiekt QOOCPF ma właściwości QOOCPF6GZV i QOOCPF6[RG, które definiują tekst i typ polecenia, właściwość QPPGEVKQP, która określa połączenie używane do wykonania polecenia, oraz właściwość QOOCPF6KOGQWV, która określa, jak długo polecenie może być wykonywane, zanim zostanie wygenerowany błąd. Ma również właściwość 2CTCOGVGTU, która jest kolekcją parametrów przekazywanych wykonywanemu poleceniu. Wreszcie, w przeciwieństwie do klasycznego obiektu ADO QOOCPF, właściwość 6TCPUCEVKQP określa transakcję, w ramach której wykonywane jest polecenie. Wszystkie trzy wersje obiektu QOOCPF (1NG D, 5SN i 1FDE) mają identyczne właściwo- ści i metody z jednym wyjątkiem. Obiekt 5SN QOOCPF ma jedną dodatkową metodę — ZGEWVG:ON4GCFGT. Metoda ta wykorzystuje mechanizm SQL Servera, który automa- tycznie zwraca dane w formacie XML (kiedy do kwerendy SQL 5 . 6 zostanie dodana klauzula (14:/.). Inną różnicą między poszczególnymi wersjami obiektu QOOCPF są wartości właściwości QOOCPF6[RG. Wszystkie trzy wersje obsługują wartości 6GZV i 5VQTGF2TQEGFWTG, ale obiekt 1NG D QOOCPF obsługuje również trzecią wartość — 6CDNG KTGEV. Pozwala ona efektywnie wczytać zawartość całej tabeli poprzez ustawienie właściwości QOOCPF6[RG na 6CDNG KTGEV, a właściwości QOOCPF6GZV na nazwę tabeli. Teraz należy rozbudować przygotowany wcześniej formularz (zobacz rysunek 4.1):  Dodać kolejny przycisk tuż pod przyciskiem DVP QPPGEVKQP poprzez przeciągnięcie go z zakładki Windows Forms przybornika.  W oknie właściwości przycisku ustawić właściwość 0COG na DVP QOOCPF, a właściwość 6GZV na 2QNGEGPKG.  Wpisać kod obsługi przycisku DVP QOOCPF (zobacz listing 4.2). .KUVKPI Kod, który otwiera połączenie z bazą danych i przygotowuje obiekt polecenia 2TKXCVG5WDDVP QOOCPFA NKEM $[8CNUGPFGT#U5[UVGO1DLGEVA $[8CNG#U5[UVGO XGPV#TIU *CPFNGUDVP QOOCPF NKEM  Tworzenie instancji obiektu Connection  KOEPP#U5SN QPPGEVKQP0GY5SN QPPGEVKQP A UGTXGTNQECNJQUVWKFUCFCVCDCUGRWDU  Tworzenie instancji obiektów Command i Parameter  KOEOF#U5SN QOOCPF0GY5SN QOOCPF VZV4GUWNVU NGCT  Otwieranie połączenia EPP1RGP  Ustawianie połączenia i tekstu polecenia w obiekcie Command EOF QPPGEVKQPEPP EOF QOOCPF6[RG QOOCPF6[RG6GZV 160 Visual Basic .NET. Bazy danych. Księga eksperta EOF QOOCPF6GZV5GNGEVCWANPCOGUVCVGHTQOCWVJQTU  Wypisywanie łańcucha polecenia VZV4GUWNVU6GZVĐCēEWEJRQNGEGPKC QPVTQN JCTU T.H VZV4GUWNVU6GZVVZV4GUWNVU6GZV QPVTQN JCTU6CDA EOF QOOCPF6GZV  QPVTQN JCTU T.H PF5WD Po uruchomieniu projektu 1DKGMV[ QUVCYEQY CP[EJ i kliknięciu przycisku QOOCPF w polu tekstowym powinna pojawić się instrukcja SQL, którą przypisano właściwości QOOCPF6GZV obiektu 5SN QOOCPF: 5GNGEVCWANPCOGUVCVGHTQOCWVJQTU. Wiele klas .NET Framework, a także klas pisanych przez innych programistów, zawiera przeciążone konstruktory obiektów. Innymi słowy, istnieje kilka różnych metod tworzenia nowych instancji klasy, za pomocą konstruktorów przyjmujących różną liczbę argumentów. Można wybrać wersję, która najlepiej odpowiada bieżącym potrzebom. Konstruktor obiektu 5SN QPPGEVKQP z listingu 4.2 różni się od konstruktora z listingu 4.1. W tamtym przykładzie użyliśmy konstruktora domyślnego, który nie przyjmuje żadnych argumentów. Następnie przypisaliśmy łańcuch połączeniowy obiektowi 5SN QPPGEVKQP, ustawiając właściwość QPPGEVKQP5VTKPI: Tworzenie instancji obiektu Connection KOEPP#U5SN QPPGEVKQP0GY5SN QPPGEVKQP Ustawianie łańcucha połączeniowego EPP QPPGEVKQP5VTKPIUGTXGTNQECNJQUVWKFUCFCVCDCUGRWDU Na listingu 4.2 użyliśmy konstruktora, który przyjmuje łańcuch połączeniowy jako argument. Dzięki temu mogliśmy utworzyć obiekt i przypisać mu łańcuch połączeniowy za pomocą jednego wiersza kodu:  Tworzenie instancji obiektu Connection  KOEPP#U5SN QPPGEVKQP0GY5SN QPPGEVKQP A UGTXGTNQECNJQUVWKFUCFCVCDCUGRWDU 7ľ[YCPKGQDKGMVW QOOCPFYRQđæEGPKW RCTCOGVTCOKKRTQEGFWTCOKUMđCFQYCP[OK Podczas przesyłania kwerend lub poleceń do źródła danych często trzeba przekazywać wartości parametrów. Jest to niemal regułą podczas wykonywania poleceń akcji (72 #6 , +05 46 lub . 6 ) i wywoływania procedur składowanych. Aby spełnić ten wymóg, obiekt QOOCPF zawiera właściwość 2CTCOGVGTU, która jest obiektem typu 2CTCOGVGT QNNGEVKQP i zawiera kolekcję obiektów 2CTCOGVGT. Mechanizm ten również jest bardzo podobny do swojego odpowiednika z ADO 2.X. Obiekt 2CTCOGVT (i 2CTCOGVGT QNNGEVKQP) jest ściśle związany z konkretnym dostawcą danych, więc jest jednym z obiektów, które muszą być zaimplementowane w każdym dostawcy danych ADO.NET. Programowanie obiektu 5SN2CTCOGVGT QNNGEVKQP znacz- nie się różni od programowania obiektów 1FDE2CTCOGVGT QNNGEVKQP i 1NG D2CTCOGVGT å QNNGEVKQP. Pierwszy obsługuje parametry nazwane, a pozostałe dwa — parametry pozycyjne. Różnica ta wpływa na sposób definiowania kwerend i parametrów. Rozdział 4.  ADO.NET — dostawcy danych 161 Zacznijmy od prostej kwerendy parametrycznej na tabeli CWVJQTU w bazie danych RWDU. Przypuśćmy, że chcemy pobierać nazwiska wszystkich autorów z określonego stanu. Gdybyśmy używali dostawcy danych 1NG D lub 1FDE, kwerenda wyglądałaby tak: 5GNGEVUVCVGCWAHPCOGCWANPCOGHTQOCWVJQTUYJGTGUVCVG! Miejscem na parametr jest tutaj znak zapytania. Gdyby kwerenda miała inne parametry, również zastąpiono by je znakami zapytania. Poszczególne parametry są odróżniane według pozycji; oznacza to, że kolejność dodawania parametrów do obiektu 2CTCOGVGT å QNNGEVKQP musi dokładnie odpowiadać ich kolejności w kwerendzie albo procedurze składowanej. Gdybyśmy natomiast używali dostawcy danych 5SN NKGPV, kwerenda wyglądałaby tak: 5GNGEVUVCVGCWAHPCOGCWANPCOGHTQOCWVJQTUYJGTGUVCVG /[2CTCO Miejscem na parametr jest tu nazwa specyficznego parametru; dodatkowe parametry rów- nież byłyby określone przez nazwy. Ponieważ parametry są odróżniane według nazw, można je dodawać do obiektu 2CTCOGVGT QNNGEVKQP w dowolnej kolejności. Obiekt 2CTCOGVGT można utworzyć jawnie, za pomocą jego konstruktora (to znaczy za pomocą operatora 0GY), albo poprzez przekazanie wymaganych parametrów do metody #FF obiektu 2CTCOGVGT QNNGEVKQP (właściwości 2CTCOGVGTU obiektu QOOCPF). Warto też zauważyć, że zarówno konstruktor 2CTCOGVGT, jak i metoda #FF mają kilka przeciążonych wersji. Oto sposób dodawania parametru polecenia poprzez jawne utworzenie obiektu parametru: KOO[2CTCOGVGT#U0GY1FDE2CTCOGVGT  /[2CTCO1FDE6[RG JCT O[2CTCOGVGT KTGEVKQP2CTCOGVGT KTGEVKQP+PRWV O[2CTCOGVGT8CNWG # EOF2CTCOGVGTU#FF O[2CTCOGVGT A oto sposób dodawania parametru polecenia poprzez przekazanie odpowiednich argu- mentów do metody #FF: EOF2CTCOGVGTU#FF  /[2CTCO1FDE6[RG JCT EOF2CTCOGVGTU /[2CTCO  KTGEVKQP2CTCOGVGT KTGEVKQP+PRWV EOF2CTCOGVGTU /[2CTCO 8CNWG # Drugi sposób jest krótszy i zwykle preferowany, chyba że obiekt 2CTCOGVGT będzie używany wielokrotnie. W wywołaniu metody #FF trzeba określić nazwę parametru, jego typ i (w razie potrzeby) długość. Następnie można ustawić „kierunek” parametru — wejściowy (+PRWV), wyjściowy (1WVRWV), wejściowo-wyjściowy (+PRWV1WVRWV) albo wartość zwrotna (4GVWTP8CNWG). Do- myślny kierunek to +PRWV. Wreszcie, aby określić wartość parametru, należy przypisać ją właściwości 8CNWG obiektu 2CTCOGVGT. Można ustawić kilka dodatkowych właściwości tego obiektu takich jak 5ECNG, 2TGEKUKQP i +U0WNNCDNG. Gdybyśmy używali dostawcy danych 5SN NKGPV, kod byłby niemal identyczny. Zastąpi- libyśmy tylko przedrostki 1FDE przedrostkami 5SN i użyli typu wyliczeniowego 5SN D6[RG: 162 Visual Basic .NET. Bazy danych. Księga eksperta KOO[2CTCOGVGT#U0GY5SN2CTCOGVGT  /[2CTCO5SN D6[RG JCT O[2CTCOGVGT KTGEVKQP2CTCOGVGT KTGEVKQP+PRWV O[2CTCOGVGT8CNWG # EOF2CTCOGVGTU#FF O[2CTCOGVGT lub: EOF2CTCOGVGTU#FF  /[2CTCO5SN D6[RG JCT EOF2CTCOGVGTU /[2CTCO  KTGEVKQP2CTCOGVGT KTGEVKQP+PRWV EOF2CTCOGVGTU /[2CTCO 8CNWG # Aby przypisać parametrowi wartość 0WNN, należy użyć właściwości 8CNWG obiektu $0WNN. Oto odpowiedni wiersz kodu: EOF2CTCOGVGTU  /[2CTCO 8CNWG $0WNN8CNWG Zmodyfikujmy kod przycisku DVP QOOCPF w sposób pokazany na listingu 4.3. Po urucho- mieniu programu i kliknięciu przycisku Polecenie wyświetlony zostanie tekst kwerendy oraz nazwa i wartość parametru. .KUVKPI Kod, który przygotowuje obiekty polecenia i parametru oraz wyświetla ich wartości 2TKXCVG5WDDVP QOOCPFA NKEM $[8CNUGPFGT#U5[UVGO1DLGEVA $[8CNG#U5[UVGO XGPV#TIU *CPFNGUDVP QOOCPF NKEM  Tworzenie instancji obiektu Connection  KOEPP#U5SN QPPGEVKQP0GY5SN QPPGEVKQP A UGTXGTNQECNJQUVWKFUCFCVCDCUGRWDU  Tworzenie instancji obiektu Command i obiektu Parameter  KOEOF#U5SN QOOCPF0GY5SN QOOCPF  KORTO#U5SN2CTCOGVGT0GY5SN2CTCOGVGT VZV4GUWNVU NGCT  Otwieranie połączenia EPP1RGP  Ustawianie połączenia i tekstu polecenia w obiekcie Command EOF QPPGEVKQPEPP EOF QOOCPF6[RG QOOCPF6[RG6GZV EOF QOOCPF6GZVA 5GNGEVCWANPCOGUVCVGHTQOCWVJQTUYJGTGUVCVG /[2CTCO  Tworzenie parametru i ustawianie wartości EOF2CTCOGVGTU#FF 0GY5SN2CTCOGVGT  /[2CTCOA 5SN D6[RG JCT EOF2CTCOGVGTU  /[2CTCO 8CNWG #  Wypisywanie łańcucha polecenia VZV4GUWNVU6GZVĐCēEWEJRQNGEGPKC QPVTQN JCTU T.H VZV4GUWNVU6GZVVZV4GUWNVU6GZV QPVTQN JCTU6CDA EOF QOOCPF6GZV  QPVTQN JCTU T.H  Wypisywanie parametrów polecenia i ich wartości VZV4GUWNVU6GZVVZV4GUWNVU6GZV2CTCOGVT[RQNGEGPKCA  QPVTQN JCTU T.H (QT CEJRTO+PEOF2CTCOGVGTU VZV4GUWNVU6GZVVZV4GUWNVU6GZV QPVTQN JCTU6CDA RTO2CTCOGVGT0COGRTO8CNWG QPVTQN JCTU T.H 0GZV PF5WD Rozdział 4.  ADO.NET — dostawcy danych 163 Procedury składowane wywołuje się w ten sam sposób z tym, że typem polecenia jest QOOCPF6[RG5VQTGF2TQEGFWTG, a nie QOOCPF6[RG6GZV. Nazwę procedury składowanej należy przypisać właściwości QOOCPF6GZV. Zatem wywołanie procedury składowanej o nazwie )GV#WVJQTU(TQO5VCVG, która przyjmuje dwuznakowy parametr, wyglądałoby tak: EOF QOOCPF6[RG QOOCPF6[RG5VQTGF2TQEGFWTG EOF QOOCPF6GZV)GV#WVJQTU(TQO5VCVG EOF2CTCOGVGTU#FF  /[2CTCO5SN D6[RG JCT EOF2CTCOGVGTU  /[2CTCO  KTGEVKQP2CTCOGVGT KTGEVKQP+PRWV EOF2CTCOGVGTU  /[2CTCO 8CNWG # W razie wywoływania procedury składowanej za pośrednictwem obiektu 1FDE QOOCPF należy używać standardowych sekwencji unikowych ODBC, zamiast po prostu podawać nazwę procedury składowanej we właściwości QOOCPF6GZV. W sekwencji unikowej znaki zapytania zastępują wartości parametrów. Odpowiednik ODBC powyższego kodu wyglądałby tak: EOF QOOCPF6[RG QOOCPF6[RG5VQTGF2TQEGFWTG EOF QOOCPF6GZV])GV#WVJQTU(TQO5VCVG!_ EOF2CTCOGVGTU#FF  /[2CTCO1FDE6[RG JCT EOF2CTCOGVGTU  /[2CTCO  KTGEVKQP2CTCOGVGT KTGEVKQP+PRWV EOF2CTCOGVGTU  /[2CTCO 8CNWG # Jeśli procedura składowana ma wartość zwrotną, należy poprzedzić nazwę procedury znakami !, jak w poniższym przykładzie: EOF QOOCPF6GZV]!)GV#WVJQTU(TQO5VCVG!_ Jeśli procedura składowana zwraca wyniki, należy określić kierunek 1WVRWV i odczytać właściwość 8CNWG parametru po wywołaniu procedury. W poniższym przykładzie okre- ślono też, że procedura ma wartość zwrotną. Ponieważ użyto typu +PV SQL Servera, nie trzeba określać długości parametru, gdyż z definicji składa się on z czterech bajtów: EOF2CTCOGVGTU#FF 0GY5SN2CTCOGVGT TGUWNV5SN D6[RG+PV EOF2CTCOGVGTU TGUWNV  KTGEVKQP2CTCOGVGT KTGEVKQP4GVWTP8CNWG EOF2CTCOGVGTU#FF 0GY5SN2C
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Visual Basic .NET. Bazy danych. Księga eksperta
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: