ASP.NET
Transkrypt
ASP.NET
22.06.2012r. Małgorzata Stogowska ASP.NET 1.Wstęp Omawiana przeze mnie technologia ASP.NET należy do platformy .NET Framework opracowanej przez firmę Microsoft. Pozwala ona na tworzenie dynamicznych serwisów internetowych. Korzysta ona w pełni z dobrodziejstw .NET przez co programista nie musi się martwic o takie rzeczy jak bezpieczeństwo aplikacji czy dostęp do źródeł danych ponieważ odpowiednie mechanizmy zostały już zaimplementowane w w/w platformie. Wybór dostępnych języków jest dość szeroki (od Visual Basic do C# czy nawet Perl lub Python) ponieważ platforma udostępnia kompilatory dla każdego z nich. Postaram się omówić wykorzystanie zaimplementowanego mechanizmu dostępu do bazy danych na przykładzie bazy MySQL. 2. Połączenie z bazą danych MySQL – konfiguracja kontrolki SqlDataSource MySQL należy do baz danych, które standardowo nie są wspierane przez platformę .NET, jednak nie wyklucza to możliwości z wykorzystania jej na witrynach ASP.NET. Producenci wielu systemów baz danych w tym także MySQLa udostępniają tzw. „connectory” dla platformy .NET, czyli biblioteki umożliwiające korzystanie z ich produktów w rozwiązaniach dostarczanych przez Microsoft. Po dodaniu „connectora” do naszego projektu, co zazwyczaj polega na skopiowaniu plików .dll w odpowiednie miejsce, możemy zacząć korzystać z bazy MySQL. Za połączenie witryny z bazą danych odpowiada kontrola SqlDataSource która jest potem wykorzystywana przez inne kontrolki jako źródło do pobierania danych oraz pewien interfejs służący do operacji na nich. W procesie konfiguracji kontrolki należy określić przede wszystkim jego unikalną nazwę (ID), dostawcę usługi (ProviderName), czyli w naszym przypadku connector MySQL, parametry połączenia takie jak adres serwera, nazwę użytkownika i hasło do bazy (ConnectionString) oraz kwerendy SQL które będą wykonywane podczas operacji na danych (czyli kwerendy typu SELECT (SelectCommand), INSERT (InsertCommand), UPDATE (UpdateCommand) i DELETE (DeleteCommand)). Poniżej widoczny jest przykład kodu kontrolki SqlDataSource skonfigurowanej na połączenie z bazą MySQL : <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="server=localhost;UserId=gosia;password=pass;database=test" ProviderName="MySql.Data.MySqlClient" SelectCommand="SELECT id, imie, nazwisko FROM pracownicy"> </asp:SqlDataSource> str. 1 3. Wyświetlanie danych z bazy MySQL – konfiguracja kontrolki GridView Kontrolka SqlDataSource skonfigurowana tak jak w powyższym punkcie jest już gotowa do użycia przez inne kontrolki. Do wyświetlania danych w postaci tabelarycznej najczęściej używa się kontrolki GridView. Pobiera ona dane ze wskazanego źródła (nie musi być to koniecznie baza danych, mogą być to nawet ręcznie wpisane przez programistę dane) oraz wyświetla w postaci tabeli, której wygląd możemy dowolnie dostosowywać. W celu wykorzystania wcześniej skonfigurowanego połączenia do wyświetlenia danych należy przypisać do parametru DataSourceID w kontrolce GridView identyfikator kontrolki SqlDataSource. Dodatkowym ułatwieniem jest parametr AutoGenerateColumns który ustawiony na wartość true automatycznie generuje nazwy kolumn na ich odpowiedniki w bazie danych. Przykład tak skonfigurowanego GridView : <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" DataKeyNames="id" DataSourceID="SqlDataSource1"> </asp:GridView> 4. Operacje na danych Możliwości operacji na danych w bazie nie zamykają się tylko i wyłącznie na możliwości ich odczytu i prezentacji, istnieje również możliwość ich dodawania, usuwania i edycji. Korzystanie w tych możliwości w technologii ASP.NET również odbywa się w oparciu o kontrolkę SqlDataSource omawianą w punkcie pierwszym. Wymaga to jednak jej dodatkowej konfiguracji. Parametrami odpowiedzialnymi za możliwość operacji na danych są : InsertCommand, UpdateCommand oraz DeleteCommand. Przypisuje się do nich kwerendy SQL odpowiadające za przypisane do nich czynności, z tym że zamiast wartości (np. UPDATE test SET imie=’Gosia’) wstawiamy parametry w postaci @nazwa_parametru. Typy danych (np. liczba, tekst) tych parametrów są potem definiowane w elementach UpdateParameters i podobnych. Tak przygotowana kontrolka pozwala na pełne korzystanie z bazy danych. Inne kontrolki które chcą zrealizować jakieś operacje na bazie danych powinny pod określone parametry „podpiąć” żądane wartości tak aby zapytanie doszło do skutku. Poniżej podaje przykład w pełni skonfigurowanej kontrolki SqlDataSource : <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="server=localhost;UserId=gosia;password=pass;database=test" ProviderName="MySql.Data.MySqlClient" SelectCommand="SELECT id, imie, nazwisko FROM pracownicy" InsertCommand="INSERT INTO pracownicy VALUES(DEFAULT,@imie,@nazwisko)" DeleteCommand="DELETE FROM pracownicy WHERE (pracownicy.id = @id)" UpdateCommand="UPDATE pracownicy SET pracownicy.imie=@imie, pracownicy.nazwisko=@nazwisko WHERE pracownicy.id=@id" > <InsertParameters> <asp:Parameter Name="imie" Type="String" /> <asp:Parameter Name="nazwisko" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="imie" Type="String" /> <asp:Parameter Name="nazwisko" Type="String" /> str. 2 <asp:Parameter Name="id" Type="Int32" /> </UpdateParameters> <DeleteParameters> <asp:Parameter Name="id" type="Int32" /> </DeleteParameters> </asp:SqlDataSource> 5. Bibliografia J.Liberty, D. Maharry, D. Hurwitz – ASP.NET 3.5 Programowanie – Wydawnictwo Helion 2010 http://www.mysql.com/downloads/connector/net/#downloads http://msdn.microsoft.com/enus/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx str. 3