310 likes | 467 Views
Arkadiusz Twardoń ZTiPSK e-mail: Arkadiusz.Twardon@polsl.pl. Aplikacje ASP.NET. 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
E N D
Arkadiusz Twardoń ZTiPSK e-mail: Arkadiusz.Twardon@polsl.pl Aplikacje ASP.NET
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
Co to jest 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
Korzystanie z przestrzeni nazw wprowadzonych przez ADO.NET • Instrukcje Importslub using importują przestrzenie nazw • ADO.NET dostarcza przestrzenie nazw: • System.Data • System.Data.SqlClient • System.Data.OleDb Imports System.Data Imports System.Data.SqlClient using System.Data; using System.Data.SqlClient;
Model obiektowy ADO.NET DataSet DataTable DataTable SqlDataAdapter OleDbDataAdapter SQL Server .NET Data Provider OLE DB .NET Data Provider OleDbConnection SqlConnection SQL Server 7.0 (i następne) Źródła OLEDB (SQL Server 6.5)
Co to jest Dataset? DataSet DataTable DataTable DataTable SqlDataAdapter Pamięć serwera Web Fizyczne repozytorium SqlConnection OleDbDataAdapter OleDbConnection SQL Server 2000 OleDb Database
DataSet Dostęp do danych przy użyciu ADO.NET Database 1 Klient generuje żądanie Program tworzyobiekty SqlConnection i SqlDataAdapter 2 Serwer Web Wypełnia DataSet przy pomocy obiektu DataAdapter i zamyka połączenie SqlConnection 3 Zwraca DataSet do Klienta 4 SqlDataAdapter Klient manipuluje na danych 5 Program uaktualnia DataSet 6 Korzysta z SqlDataAdapter aby otworzyć SqlConnection, uaktualnić bazę danych i zamyka połączenie 7 Kontrolka List-Bound Klient
Tworzenie połączenia z bazą danych • Wykorzystanie Server Explorer’a 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 połączenia z bazą danych • Tworzenie nowego połączenia przy wykorzystaniu okna dialogowego Data Links • Tworzenie nowego połączenia poprzez drag’n’drop Tabeli
Model obiektu DataAdapter DataSet DataAdapter SelectCommand UpdateCommand InsertCommand DeleteCommand DataReader Command Command Command Command Connection sp_SELECT sp_UPDATE sp_INSERT sp_DELETE Database
Demonstracja: Połączenie z bazą danych • Znajdź w oknie Server Explorer tablicę w bazie SQL Server • Drag’n’droptabelę 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) string strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true"; SqlConnection conn = new SqlConnection(strConn); • Password • Persist security info • Provider • User ID
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() 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
Właściwość Opis DataSource • ObiektDataSetzawierający dane DataMember • Obiekt DataTable z obiektuDataSet DataTextField • Pole obiektuDataTable, do wyświetlenia DataValueField • Pole obiektuDataTable, które będzie stanowiło wartość wybranej pozycji w kontrolce 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();
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ć obiektSqlConnection • Utworzyć obiektSqlDataAdapter • Wygenerować obiektDataSet • UmieścićDataGridna stronie Web Form • PołączyćDataGridz DataSet • Czas: 5 minut
Demonstracja: Dostosowywanie obiektu DataGrid • Korzystanie z polecenia AutoFormat • Ustalanie własnych nagłówków kolumn • Stronnicowanie • Sortowanie
DataSets vs. DataReaders DataSet DataReader Dostęp do danych typu Read/write Dostęp do danych typu Read-only Zawiera wiele tabel z różnych baz danych Zawiera wynik jednego pytania SQL z jednej bazy danych Praca bezpołączeniowa Praca ze stałym połączeniem Połączony z wieloma kontrolkami Tylko z jedną kontrolką Dostęp do wszystkich rekordów (przód/tył) Dostęp tylko do kolejnego rekordu Wolniejszy dostęp Szybszy dostęp Wspierany przez Visual Studio .NET Kodowany ręcznie
Korzystanie z obiektu DataReader • Kolejność działań: Utwórz i otwórz połączenie z bazą danych Utwórz obiekt Command Utwórz obiekt DataReaderw oparciu o Command Wywołaj metodęExecuteReader Wykorzystaj zawartość obiektuDataReader Zamknij obiektDataReader Zamknij obiektConnection • Do obsługi błędów wykorzystaj Try…Catch…Finally 1 2 3 4 5 6 7 Code Example
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 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 <asp:DataGrid id="dgAuthors" runat="server" /> 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 Server’a
SQL Server Security Send the username and password in clear text. Web ServerDefault ASP.NET settings Mixed modeauthentication Here is the username and password SQL ServerEach user account addedto SQL Server logins group Do not send the username and password. Just send that the user has been authenticated. or… Client Windows onlyauthentication SQL ServerOnly ASPNET accountis granted access Web ServerWindows authentication
Ustawianie reguł bezpieczeństwa po stronie SQL Server’a • 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 DataReaderw kontrolkach typu List-Bound