Programowanie w ASP .NET. Ćwiczenie praktyczne №4(2 godz.) Cel pracy: Realizacja projektu aplikacji z dostępem do bazy danych przez INTERNET. Zadanie 1 . Opracowanie aplikacji. Opis zadania. Aplikacja ASP.NET realizuje dowolne polecenia SQL do bazy danych. Rezultaty tych zapytań są odwzorowywane przez kontrolkę DataGrid. Aplikacja składa się z jedną strony, która zawiera dwie kontrolki Panel. Każda z kontrolek Panel zawiera inne kontrolki ASP które są wyświetlane lub są niewidoczne na tym panelu. Jeden panel jest przeznaczony dla wpisania poleceń SQL, drugi dla formowania wyników poleceń. Na rys.1 jest pokazany pierwszy panel. Rys.1 Panel dla wpisywania poleceń SQL zawiera element TextBox dla wpisywania poleceń oraz element Button dla przesyłania poleceń do bazy danych . Przy napisaniu polecenia użytkownik musi wprowadzić słowa kluczowe Select oraz From, inaczej będzie sformowany odpowiedni komunikat pro błąd ( rys.2). Obecność tych słów musi być sprawdzone za dopomogą walidatorów RequiredFieldValidator oraz RegularExpressionValidator. Pierwszy walidator kontroluje obecność informacji w elemencie TextBox, drugi kontroluje obecność klauzul Select oraz From. Po naciśnięciu przez użytkownika przyciska „Realizuj Polecenie” pierwszy panel staje niewidocznym oraz staje widocznym drugi panel z kontrolką DataGrid (lub Repeater) zawierającej rezultaty polecenia do bazy danych (rys 3). Panel z rezultatami odwzorowuje wszystkie pola zdefiniowane w poleceniu SQL. Polecenie SQL może być komplikowanym, zawierać różne łączenia tabel. Panel Projektu w VisualStudio jest pokazany na rys. 4. Okno właściwości walidatora dla klauzuli Select jest pokazane na rys. 5. Na tym rysunku jest pokazane wyrażenie dla kontroli obecności klauzuli SELECT wewnątrz polecenia SQL. Po naciśnięciu przyciska Nowe Polecenie (rys.3) można przejść do pierwszego panelu, oraz drugi panel w tym przypadku staje niewidocznym. Rys.2 Rys. 3 Rys.4 Witamy na naszej stronie "Polecenia SQL" Rys. 5 Kod klasy WebForm1 strony ASP jest pokazany na listingu 1. Listing 1. Public Class WebForm1 Inherits System.Web.UI.Page #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.DBConn = New System.Data.OleDb.OleDbConnection Me.DSResults = New System.Data.DataSet CType(Me.DSResults, System.ComponentModel.ISupportInitialize).BeginInit() ' 'DBConn ' Me.DBConn.ConnectionString = "Data Source=""C:\aspnet_bazy_test\C4Birthday.mdb"";Provider=""Microsoft.Jet.OLED B.4." & _ "0"";" ' 'DSResults ' Me.DSResults.DataSetName = "NewDataSet" Me.DSResults.Locale = New System.Globalization.CultureInfo("pl") CType(Me.DSResults, System.ComponentModel.ISupportInitialize).EndInit() End Sub Protected WithEvents pnlQuery As System.Web.UI.WebControls.Panel Protected WithEvents lblTitle As System.Web.UI.WebControls.Label Protected WithEvents txtQuery As System.Web.UI.WebControls.TextBox Protected WithEvents rfvQuery As System.Web.UI.WebControls.RequiredFieldValidator Protected WithEvents revSelect As System.Web.UI.WebControls.RegularExpressionValidator Protected WithEvents revFrom As System.Web.UI.WebControls.RegularExpressionValidator Protected WithEvents DBConn As System.Data.OleDb.OleDbConnection Protected WithEvents DSResults As System.Data.DataSet Protected WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand Protected WithEvents OleDbInsertCommand1 As System.Data.OleDb.OleDbCommand Protected WithEvents OleDbUpdateCommand1 As System.Data.OleDb.OleDbCommand Protected WithEvents OleDbDeleteCommand1 As System.Data.OleDb.OleDbCommand Protected WithEvents DBCommand As System.Data.OleDb.OleDbDataAdapter Protected WithEvents butQuery As System.Web.UI.WebControls.Button Protected WithEvents butResults As System.Web.UI.WebControls.Button Protected WithEvents dgQueryResult As System.Web.UI.WebControls.DataGrid Protected WithEvents pnlResults As System.Web.UI.WebControls.Panel 'NOTE: The following placeholder declaration is required by the Web Form Designer. 'Do not delete or move it. Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init InitializeComponent() 'Ten kod trzeba wpisac wreczna Me.pnlQuery.Controls.Add(Me.txtQuery) Me.pnlQuery.Controls.Add(Me.butQuery) Me.pnlResults.Controls.Add(Me.dgQueryResult) Me.pnlResults.Controls.Add(Me.butResults) End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here If Not IsPostBack Then 'Ten kod trzeba wpisac wreczna pnlQuery.Visible = True pnlResults.Visible = False End If End Sub Private Sub butQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butQuery.Click 'Ten kod trzeba wpisac wreczna Me.DBCommand = New System.Data.OleDb.OleDbDataAdapter(txtQuery.Text, Me.DBConn) Me.DBCommand.Fill(Me.DSResults, "TabelaDS") Me.dgQueryResult.DataSource = Me.DSResults.Tables("TabelaDS").DefaultView Me.dgQueryResult.DataBind() Me.pnlQuery.Visible = False Me.pnlResults.Visible = True End Sub Private Sub butResults_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butResults.Click 'Ten kod trzeba wpisac wreczna pnlQuery.Visible = True pnlResults.Visible = False End Sub End Class Zadanie 2. Opracowanie kodu aplikacji dla połączenia z bazą danych MS SQL Server. Opis zadania. Dla połączenia z bazą danych Pubs lub Northwind MS SQL Server trzeba wykorzystać obiekty klasy: SQLConnection zamiast klasy OLEDBConnection, SQLCommand zamiast klasy OLEDBComand, SQLDataAdapter zamiast klasy OLEDBDataAdapter. Klasa strony musi zawierać przestrzeń klas „System.Data” oraz „System.Data.SqlClient”. Przykład stworzenia obiektu DBConn klasy SQLConnnection dla połączenia z bazą danych „Pubs”( Serwer SQL jest na tym samym komputerze z serwerem WWW) : DBConn = New SqlConnection("server=.;uid=sa;pwd=;database=Pubs") Literatura. 1. Chris Payne. ASP.NET dla każdego, Helion, 2002 2. Paweł Chłosta. ASP.NET i kolekcje C#, MIKOM, 2004-10-01 3. Scott Worley. ASP.NET Vademecum profesjonalisty, Helion, 2003 4. Jose Mojica. C# I ASP.NET, Helion, 2004 5. Bill Evjen, Scott Hanselman, Devin Rader. ASP.NET 3.5 z wykorzystaniem C# I VB. Helion 2010 6. Jesse Liberty, Dan Hurwitz. ASP.NET . Programowanie, Helion, 2007. 7. Jesse Liberty. C#. Programowanie, Helion, 2006. 8. Kevin Hoffman. Visual C# 2005, Helion, 2007.