.NET i Bazy Danych Projekt: Wadim Grasza ODBC Open DataBase Connectivity Dostęp do danych w dowolnym DBMS Biblioteka odbc32.dll Sterowniki dostarczane przez producentów DBMS Komunikacja m.in. z: – – – – MS SQL Server Oracle Visual Fox Pro Bazy MS Access OLE DB Rozwinięcie idei ODBC W teorii dostęp do dowolnych danych, nie tylko relacyjnych DBMS Idea OLE DB: – – – Data providers przechowują i udostępniają dane Data consumers mogą korzystać z danych Service components przetwarzają dane Interfejsem dla programisty jest ADO ADO = ActiveX Data Objects Obiektowy interfejs dostępu do danych w modelu COM Prostota i spójność Popularność dzięki powstałym komponentom do RAD Kolejny krok: ADO.NET ADO.NET Znacznie uproszczony dostęp do DBMS Ujednolicenie dostępu do danych dla całej platformy .NET i wszystkich DBMS Interfejsy wyspecjalizowane: – – Sql… Odbc… Interfejs ogólny: – OleDb… Nawiązywanie połączenia z bazą danych Zainicjowanie odpowiedniego obiektu SqlConnection, OleDbConnection, OdbcConnection Przekazanie ConnectionString do konstruktora – – – – – – Rodzaj dostawcy protokołu OleDB: Provider Nazwa serwera: Server Nazwa bazy danych: Database Nazwa użytkownika: User ID Hasło: Pwd Przykład: „Server=(local);Database=Test;User ID=sa;Pwd=abcd” Przykład 1 Nawiązywanie połączenia Pasywna wymiana danych Model: Zapytanie => wynik Każde zapytanie niezależne Do pasywnej wymiany danych służy obiekt: SqlCommand, OleDbCommand, OdbcCommand Obiekt może wykonać polecenie i zwrócić: – – – Zbiór rekordów Wartość skalarną Pusty zbiór wyników Przykład 2 Zapytania Lokalne struktury danych Zakres danych Struktury danych Powiadamianie o zmianach Wielodostęp Przykład 3 Lokalne struktury danych Transakcje Transakcja gwarantuje niepodzielność wykonania ciągu operacji W ADO.NET: SqlTransaction, OdbcTransaction, OleDbTransaction Przykład 4 Transakcje Typ DataSet Może przechowywać dane z relacyjnych baz danych DataSet przechowuje dane w kolekcji DataTable, które odpowiadają tabelom z serwera – DataTable ma kolekcje elementów typu DataRow i DataColumn: DataRow zawiera pojedynczą krotkę tabeli DataColumn zawiera informacje o kolumnie Przykład 5 DataSet Aktywna wymiana danych DataAdapter zawiera m.in. metody: – – Fill służącą do wypełnienia parametru danymi Update służącą do aktualizacji danych na serwerze poprzez wysłanie odpowiednich zapytań do serwera dla zmienionych rekordów Q: Skąd DataAdapter wie, jakich zapytań użyć? A: Programista sam definiuje odpowiednie zapytania ustawiając wartości atrybutów InsertCommand, DeleteCommand, UpdateCommand. W wyjątkowych przypadkach, gdy polecenie SELECT zawiera tylko jedną tabelę, można skorzystać z obiektu SqlCommandBuilder, który na podstawie polecenia SELECT generuje odpowiednie wartości tych atrybutów. Przykład 6 DataAdapter Przykład 7 CommandBuilder Automatyczne wiązanie danych z komponentami wizualnymi Platforma .NET pozwala w bardzo prosty sposób wiązać dane z elementami wizualnymi aplikacji Sposoby tworzenia powiązań takie same jak sposoby projektowania aplikacji – – Proceduralne Za pomocą wizualnych narzędzi (Visual Studio) Przykład 8 Proceduralne wiązanie komponentów Przykład 9 (do utworzenia) Wizualne wiązanie komponentów (Visual Studio) Pytania? Bibliografia Wiktor Zychla „Windows oczami programisty” MSDN2 Library: http://msdn2.microsoft.com/en-us/library/default.aspx Dziękuję za uwagę Wadim Grasza [email protected]