Aplikacje ASP.NET Arkadiusz Twardoń ZTiPSK
Dostęp do relacyjnych baz danych przy użyciu Microsoft Visual Studio.NET Na podstawie kursu MOC 2310
Wstęp Wstęp do ADO.NET Tworzenie połączenia z bazą danych Wyświetlanie zawartości DataSet w kontrolkach typu List-Bound
Wstęp do ADO.NET Co to jest ADO.NET? Korzystanie z przestrzeni nazw wprowadzonych przez ADO.NET Obiektowy model ADO.NET Co to jest DataSet? Dostęp do danych przy użyciu ADO.NET Identyfikacja komponentów ADO.NET
ADO.NET dostarcza zestaw klas pozwalających na manipulowanie danymi. ADO.NET dostarcza: Udoskonalony i bardziej elastyczny mechanizm w porównaniu do ADO System przeznaczony do pracy bezpołączeniowej Model programistyczny wspierający korzystanie z XML Zestaw klas, struktur, interfejsów i numeratorów do zarządzania danymi z poziomu.NET Framework Co to jest ADO.NET?
Korzystanie z przestrzeni nazw wprowadzonych przez ADO.NET Instrukcje Imports lub using importują przestrzenie nazw ADO.NET dostarcza przestrzenie nazw: System.Data System.Data.SqlClient System.Data.OleDb Imports System.Data Imports System.Data.SqlClient Imports System.Data Imports System.Data.SqlClient using System.Data; using System.Data.SqlClient; using System.Data; using System.Data.SqlClient;
DataSet SQL Server.NET Data Provider OLE DB.NET Data Provider SQL Server 7.0 (i następne) Źródła OLEDB (SQL Server 6.5) OleDbConnection OleDbDataAdapter SqlDataAdapter SqlConnection DataTable Model obiektowy ADO.NET
SQL Server 2000 DataSet DataTable Fizyczne repozytorium OleDb Database SqlDataAdapter SqlConnection DataTable Pamięć serwera Web OleDbDataAdapter OleDbConnection Co to jest Dataset?
Dostęp do danych przy użyciu ADO.NET Database 4.Zwraca DataSet do Klienta 5.Klient manipuluje na danych 2.Program tworzy obiekty SqlConnection i SqlDataAdapter 3.Wypełnia DataSet przy pomocy obiektu DataAdapter i zamyka połączenie SqlDataAdapter SqlConnection Kontrolka List-Bound Kontrolka List-Bound 1.Klient generuje żądanie Program uaktualnia DataSet 7.Korzysta z SqlDataAdapter aby otworzyć SqlConnection, uaktualnić bazę danych i zamyka połączenie Klient Serwer Web DataSet
Tworzenie połączenia z bazą danych Wykorzystanie Server Explorera do wygenerowania połączenia Model obiektu DataAdapter Demonstracja: Połączenie z bazą danych Generowanie obiektu DataSet Demonstracja : Generowanie obiektu DataSet
Tworzenie połączenia z bazą danych Tworzenie nowego połączenia poprzez dragndrop Tabeli Tworzenie nowego połączenia przy wykorzystaniu okna dialogowego Data Links
Model obiektu DataAdapter sp_SELECT Command SelectCommandUpdateCommandInsertCommandDeleteCommand DataAdapter Command Connection sp_UPDATEsp_INSERTsp_DELETE Database DataSet DataReader
Demonstracja: Połączenie z bazą danych Znajdź w oknie Server Explorer tablicę w bazie SQL Server Dragndrop tabelę na stronę ASP.NET Web Form Przejrzyj dane korzystając z SqlDataAdapter Przejrzyj źródła powstałej strony Skonfiguruj obiekt DataAdapter
Programowe tworzenie połączenia Wykorzystanie obiektu SqlConnection Ustalanie wartości parametrów połączenia Connection timeout Data source Initial catalog Integrated security Dim strConn As String = "data source=localhost; " & _ "initial catalog=northwind; integrated security=true" Dim conn As New SqlConnection(strConn) Dim strConn As String = "data source=localhost; " & _ "initial catalog=northwind; integrated security=true" Dim conn As New SqlConnection(strConn) Password Persist security info Provider User ID string strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true"; SqlConnection conn = new SqlConnection(strConn); string strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true"; SqlConnection conn = new SqlConnection(strConn);
Generowanie obiektu DataSet Obiekt DataSet można wygenerować … …poprzez GUI… Tworzony jest obiekt DataSet, który pozwala na dostęp do danych …lub programowo… I wypełnić… Dim ds As New DataSet() DataAdapter1.Fill(ds) DataAdapter2.Fill(ds) DataAdapter1.Fill(ds) DataAdapter2.Fill(ds) DataSet ds = new DataSet(); DataAdapter1.Fill(ds); DataAdapter2.Fill(ds); DataAdapter1.Fill(ds); DataAdapter2.Fill(ds);
Demonstracja : Generowanie obiektu DataSet Stworzenie obiektu DataSet poprzez obiekt DataAdapter Dodanie kolejnego obiektu DataTable z innego obiektu DataAdapter Przedstawienie schematu obiektu DataSet
Wyświetlanie zawartości DataSet w kontrolkach typu List-Bound Co to są kontrolki typu List-Bound? Wyświetlanie zawartości DataSet w kontrolkach typu List-Bound Demonstracja: Łączenie kontrolek z bazą danych Korzystanie z obiektu DataGrid Demonstracja: Dostosowywanie obiektu DataGrid
Co to są kontrolki typu List-Bound? Kontrolki, które łączą się ze źródłem danych i wyświetlają jego zawartość Do kontrolek typu List-bound należą: DropDownList ListBox CheckBoxList RadioButtonList DataGrid DataList Repeater
Wyświetlanie zawartości DataSet w kontrolkach typu List-Bound Ustawienie właściwości Wypełnienie DataSet i wywołanie metody DataBind DataAdapter1.Fill(ds) lstEmployees.DataBind() DataAdapter1.Fill(ds) lstEmployees.DataBind()WłaściwośćWłaściwośćOpisOpis DataSource Obiekt DataSet zawierający dane DataMember Obiekt DataTable z obiektu DataSet DataTextField Pole obiektu DataTable, do wyświetlenia DataValueField Pole obiektu DataTable, które będzie stanowiło wartość wybranej pozycji w kontrolce DataAdapter1.Fill(ds); lstEmployees.DataBind(); DataAdapter1.Fill(ds); lstEmployees.DataBind();
Demonstracja: Łączenie kontrolek z bazą danych Dodaj obiekt DataGrid do strony Web Form Ustaw właściwości DataSource i DataMember Wypełnij DataSet Wywołaj DataBind()
Korzystanie z obiektu DataGrid Student powinien: Utworzyć obiekt SqlConnection Utworzyć obiekt SqlDataAdapter Wygenerować obiekt DataSet Umieścić DataGrid na stronie Web Form Połączyć DataGrid z DataSet Czas: 5 minut
Demonstracja: Dostosowywanie obiektu DataGrid Korzystanie z polecenia AutoFormat Ustalanie własnych nagłówków kolumn Stronnicowanie Sortowanie
DataSets vs. DataReaders Wspierany przez Visual Studio.NET Wolniejszy dostęp Dostęp tylko do kolejnego rekordu Tylko z jedną kontrolką Zawiera wynik jednego pytania SQL z jednej bazy danych Dostęp do danych typu Read- only Kodowany ręcznie Szybszy dostęp Dostęp do wszystkich rekordów (przód/tył) Połączony z wieloma kontrolkami Zawiera wiele tabel z różnych baz danych Dostęp do danych typu Read/write DataReaderDataSet Praca bezpołączeniowaPraca ze stałym połączeniem
Code Example Korzystanie z obiektu DataReader Kolejność działań: Utwórz i otwórz połączenie z bazą danych Utwórz obiekt Command Utwórz obiekt DataReader w oparciu o Command Wywołaj metodę ExecuteReader Wykorzystaj zawartość obiektu DataReader Zamknij obiekt DataReader Zamknij obiekt Connection Do obsługi błędów wykorzystaj Try…Catch…Finally
Odczyt danych z obiektu DataReader Dla każdego rekordu wywołaj metodę Read Metoda zwraca false jeśli skończą się rekordy Dostęp do wartości pól Parametrem jest numer kolejny lub nazwa pola Funkcje Get* mają większą wydajność Zamknij DataReader Zamknij połączenie Do While myReader.Read() str &= myReader(1) str &= myReader("field") str &= myReader.GetDateTime(2) Loop Do While myReader.Read() str &= myReader(1) str &= myReader("field") str &= myReader.GetDateTime(2) Loop while (myReader.Read()) { str += myReader[1]; str += myReader["field"]; str += myReader.GetDateTime(2); } while (myReader.Read()) { str += myReader[1]; str += myReader["field"]; str += myReader.GetDateTime(2); }
Łączenie obiektu DataReader do kontrolek List- Bound Stwórz kontrolkę Połącz z obiektem DataReader dgAuthors.DataSource = dr dgAuthors.DataBind() dgAuthors.DataSource = dr dgAuthors.DataBind() dgAuthors.DataSource = dr; dgAuthors.DataBind(); dgAuthors.DataSource = dr; dgAuthors.DataBind();
Połączenie z bazą danych SQL Server Security Tworzenie połączenia Ustawianie reguł bezpieczeństwa po stronie SQL Servera
SQL Server Security Client Send the username and password in clear text. Do not send the username and password. Just send that the user has been authenticated. Mixed mode authentication Windows only authentication SQL Server Only ASPNET account is granted access Web Server Windows authentication or… SQL Server Each user account added to SQL Server logins group Web Server Default ASP.NET settings Here is the username and password
Ustawianie reguł bezpieczeństwa po stronie SQL Servera Skorzystaj z aplikacji SQL Server Enterprise Manager Ustaw tryb autoryzacji
Podsumowanie Wstęp do ADO.NET Tworzenie połączenia z bazą danych Wyświetlanie zawartości DataSet w kontrolkach typu List-Bound Wyświetlanie zawartości DataReader w kontrolkach typu List-Bound