Język SQL

advertisement
Technologia
ASP.NET
Zalety ASP.NET (ASPX)
Kodowanie po stronie serwera
 Skrypty działające po stronie klienta
 Kompilacja kodu zapewniająca
bezpieczeństwo i skalowalność

Kontrolki serwera
Pełnią podobne zadania jak kontrolki
HTML
 Wykonywane są jednak po stronie
serwera co eliminuje problemy
niezgodności z przeglądarkami
internetowymi

Tworzenie nowej prostej aplikacji
Zmieniamy nazwę strony startowej
Kontrolka i jej obsługa
Struktura aplikacji
Pliki z rozszerzeniem aspx są
projektami stron zawierającymi
odwołania do plików z kodem
wykonywanym w tle (Code Behind)
 Aplikacja generuje stronę wysyłaną do
klienta w kodzie html

Uruchamianie w w trybie
debuggowania
Źródło strony dla klienta
Składniki aplikacji – strona startowa
aspx
Strona startowa - źródło
Kod aplikacji wykonywany w tle –
***.aspx.cs
Pozostałe składniki


Skompilowany kod aplikacji ***.dll
DLL (z ang. Dynamic Link Library lub
Dynamic Linked Library - biblioteka łączona
dynamicznie) - w środowisku Windows
biblioteka współdzielona (z ang. shared
library), która przechowuje implementacje
różnych funkcji (podprogramów) programu
i/lub zasoby programu. Biblioteka DLL sama
nie może wywoływać swoich funkcji
(wykorzystywać zasobów w niej zawartych),
może to zrobić jedynie program EXE.
Pozostałe składniki
Plik konfiguracyjny Web.config
 Inne pliki projektu nie wymagane do
uruchomienia aplikacji

Wygenerowanie aplikacji wymaga
uruchomienia serwera IIS
Serwis Internet Information Services – IIS jest
składnikiem systemu Windows ale musi być
specjalnie zainstalowany
 Jeżeli nie zmieniono ustawień IIS jego
macierzystym katalogiem jest
C:\Inetpub\wwwroot
 Strona startowa aplikacji musi być
umieszczona w katalogu macierzystym lub w
podkatalogu z nazwą aplikacji

Zasoby niezbędne do uruchomienia
Strona startowa ***.aspx
 Plik ***.dll zawierający wszystkie pliki
niezbędne do uruchomienia aplikacji
 Składniki te mogą być umieszczone w
rzeczywistym katalogu w ścieżce
c:\Inetpub\wwwroot
 lub w katalogu wirtualnym

Uruchamianie aplikacji z
rzeczywistego katalogu

W katalogu c:\Inetpub\wwwroot
tworzymy katalog DzienDobry i
umieszczamy w nim plik Start.aspx
Budujemy aplikację (Build) i
publikujemy ją w katalogu
macierzystym
Uruchamiamy aplikację z adresu
localhost
Tworzenie katalogu wirtualnego
Przed utworzeniem pliku dll ustawiamy
serwer we właściwościach aplikacji na
serwerze IIS
 Następnie tworzymy katalog wirtualny
(Create Virtual Directory)
 Konfigurujemy IIS (Panel sterowania ->
Narzędzia administracyjne ->
Internetowe usługi informacyjne)

Właściwości aplikacji
Konfigurowanie IIS
Konfigurowanie IIS - cd
Aplikacja jest uruchamiana z
katalogu wirtualnego
Składniki niezbędne do
uruchomienia aplikacji z dowolnego
serwera
Na komputerze musi funkcjonować
odpowiednio skonfigurowany serwer IIS
 W przypadku katalogu rzeczywistego - w
katalogu macierzystym IIS w podkatalogu bin
musi być zapisany plik dll i w miejscu
wywoływania z localhost plik startowy aspx
 W przypadku katalogu wirtualnego katalog
aplikacji w miejscu skoordynowanym z
adresem tego katalogu
 środowisko .NETFramework

Łączenie aplikacji internetowych z
bazą danych
W trybie debuggowania aplikacje
webowe łączą się z bazą danych
podobnie jak aplikacje windowsowe
 Aplikacja webowa uruchamiana z sieci
jest widziana przez serwer baz danych
jako użytkownik ASPNET
 Jeżeli w serwerze taki użytkownik nie
jest widoczny to należy go uaktywnić

Tworzenie nowego użytkownika w
SQL MS Express
Uprawnienia ASPNET
Utworzony użytkownik ASPNET nie ma
żadnych uprawnień
 Nie można uprawnień nadać
programowo, gdyż użytkownik sam
sobie uprawnień nie może nadać
 Uprawnienia może nadać właściciel
bazy danych

Próba połączenia z bazą danych bez
odpowiednich uprawnień
Nadawanie uprawnień przy pomocy
EnterpriseManager
Nadawanie uprawnień w SQL
GRANT SELECT ON [dbo].[Studenci] TO [ASPNET]
GridView w aplikacji webowej
Kod wykonywany w tle
using System.Data;
using System.Data.SqlClient;
namespace Baza
{
public partial class _Default : System.Web.UI.Page
{
DataSet Studia = new DataSet();
DataTable Studenci = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
SqlDataAdapter Adapter = new SqlDataAdapter
("Select * From Studenci", "Data
Source=STACJONARNY\\SQLEXPRESS;Integrated
Security=True;Initial Catalog=Test");
Studia.Tables.Add(Studenci);
Kod wykonywany w tle - cd
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSource = Studia.Tables["Studenci"];
GridView1.DataBind();
}
Tryb debugg
Aplikacja w sieci lokalnej
Przesyłanie danych pomiędzy
klientem i serwerem
Do dynamicznego umieszczania na
stronie klienta danych służy obiekt
Response
 Metoda Write obiektu Response
umieszcza łańcuch w dokumencie
użytkownika

Wykorzystanie obiektu Response do
odczytu danych z bazy
Kod wykonywany w tle
DataSet Studia = new DataSet();
DataTable Studenci = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
SqlDataAdapter Adapter = new SqlDataAdapter
("Select * From Studenci", "Data
Source=STACJONARNY\\SQLEXPRESS;Integrated
Security=True;Initial Catalog=Test");
Studia.Tables.Add(Studenci);
Studia.Clear();
Adapter.Fill(Studia, "Studenci");
}
Kod wykonywany w tle
protected void Button2_Click(object sender, EventArgs e)
{
int i =1;
foreach(DataRow _r in Studia.Tables["Studenci"].Rows)
{
Response.Write(i.ToString() + ". ");
Response.Write(_r["Imie"].ToString().Trim() + " ");
Response.Write(_r["Nazwisko"].ToString().Trim());
Response.Write("<BR>");
i++;
}
}
Wynik
Strona wysłana do klienta
Umieszczanie ciasteczek na dysku
klienta

Ciasteczka (ang. cookies) to niewielkie
informacje tekstowe, wysyłane przez serwer
WWW i zapisywane po stronie użytkownika
(zazwyczaj na twardym dysku). Domyślne
parametry ciasteczek pozwalają na
odczytanie informacji w nich zawartych
jedynie serwerowi, który je utworzył.
Ciasteczka są stosowane najczęściej w
przypadku liczników, sond, sklepów
internetowych czy stron wymagających
logowania.
Wykorzystanie polecenia Response i
Request
Klienci zapisani są w bazie Test w tabeli
Klienci z autonumerowanym indeksem
 Każdemu nowemu klientowi wysyłamy
ciasteczko z jego identyfikatorem
 W momencie żądania strony
sprawdzamy czy klient miał wysłane
ciasteczko

Projekt i źródło strony startowej
Kod w tle dla ładowania strony
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim Ide As String
LadujKlientow()
Try
Ide = Request.Cookies("Klient")("Identyfikator").ToString()
Catch
Nowy = False
Response.Write("Jesteś nowym klientem!")
Response.Write("<BR>")
Response.Write("Podaj nazwę i adres.")
Response.Write("<BR>")
End Try
Kod w tle dla ładowania strony - cd
If Nowy Then
Nazwa.Text = ZnajdzKlienta(Ide)(0)("Nazwa")
Label2.Visible = False
Adres.Visible = False
Button1.Visible = False
End If
End Sub
Otwieranie bazy i ładowanie tabeli
Private Sub LadujKlientow()
SQLConn.ConnectionString = _
"Data Source=STACJONARNY\sqlexpress;Initial
Catalog=Test;Integrated Security=True"
SQLConn.Open()
Dim Adapter As New SqlDataAdapter("Select * From Klienci", _
SQLConn)
Sklep.Tables.Add(Klienci)
Adapter.Fill(Sklep, "Klienci")
End Sub
Nowy klient
Jeżeli próba znalezienia ciasteczka
zgłosi wyjątek pojawi się na stronie
odpowiedni tekst i nie zostaną
wyłączone etykiety, pola tekstowe i
przycisk
 Użytkownik wprowadza dane i naciska
przycisk

Nie znaleziono ciasteczka
Klient wprowadził dane
Klient został zapisany do bazy
Kod w tle dla przycisku
„Logowanie”
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
DodajKlienta()
End Sub
Private Sub DodajKlienta()
Dim Polecenie As New SqlCommand
Polecenie.Connection = SQLConn
Polecenie.CommandType = CommandType.StoredProcedure
Polecenie.CommandText = "DopisanieKlientow"
Kod w tle dla przycisku
„Logowanie” - cd
Polecenie.Parameters.Add(New SqlParameter("@Nazwa",
SqlDbType.Char))
Polecenie.Parameters("@Nazwa").Direction =
ParameterDirection.Input
Polecenie.Parameters.Add(New SqlParameter("@Adres",
SqlDbType.Char))
Polecenie.Parameters("@Adres").Direction =
ParameterDirection.Input
Polecenie.Parameters.Add(New SqlParameter("@Identity",
SqlDbType.Char))
Polecenie.Parameters("@Identity").Direction =
ParameterDirection.ReturnValue
Polecenie.Parameters("@Nazwa").Value = Nazwa.Text
Polecenie.Parameters("@Adres").Value = Adres.Text
Kod w tle dla przycisku
„Logowanie” - cd
Dim rezultat, wynik As Integer
wynik = Polecenie.ExecuteNonQuery
rezultat = Polecenie.Parameters("@Identity").Value
Response.Cookies("Klient")("Identyfikator") = rezultat.ToString
Response.Write("Zostałeś zapisany do bazy")
Response.Write("<BR>")
Response.Write("Otrzymałeś numer: " & rezultat.ToString)
End Sub
Procedura składowana użyta do
zapisania nowego rekordu
USE [Test]
GO
/****** Object: StoredProcedure [dbo].[DopisanieKlientow] Script
Date: 01/14/2008 18:14:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DopisanieKlientow] @Nazwa char(50),
@Adres char(50)
AS INSERT INTO Klienci (Nazwa, Adres)
VALUES (@Nazwa, @Adres)
RETURN SCOPE_IDENTITY()
Wynik aktualizacji
Jeżeli ciasteczko zostało odnalezione
If Nowy Then
Nazwa.Text = ZnajdzKlienta(Ide)(0)("Nazwa")
Label2.Visible = False
Adres.Visible = False
Button1.Visible = False
End If
End Sub
Odszukiwanie klienta
Private Function ZnajdzKlienta(ByVal ide As String)
Dim Query As String
Query = "IdKlienta = " & ide
ZnajdzKlienta = Klienci.Select(Query)
End Function
Wynik
Zastąpienie polecenia Response
kontrolkami serwera
Zmiany w kodzie
' Response.Write("Jesteś nowym klientem!")
' Response.Write("<BR>")
' Response.Write("Podaj nazwę i adres.")
' Response.Write("<BR>")
Tekst1.Text = "Jesteś nowym klientem!"
Tekst2.Text = "Podaj nazwę i adres."
' Response.Write("Zostałeś zapisany do bazy")
' Response.Write("<BR>")
' Response.Write("Otrzymałeś numer: " & rezultat.ToString)
Tekst1.Text = "Zostałeś zapisany do bazy"
Tekst2.Text = "Otrzymałeś numer: " & rezultat.ToString
Brak ciasteczka
Potwierdzenie zapisania klienta
Download