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