Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.



Vergelijkbare documenten
Een ASP.NET applicatie opzetten. Beginsituatie:

Een website maken met databasetoegang.

Mijn eerste ADO.NET applicatie

In deze query is 'alfki' een constante. Met deze query wordt telkens hetzelfde record uit de tabel Customers opgeroepen.

INHOUDSOPGAVE Het Boekenwinkeltje Registreer.aspx Opgaven... 97

Na bestudering van dit hoofdstuk moet je tot het onderstaande in staat zijn:

Automatische Installatie op IIS server

Handleiding - Aanmaken van SQL server gebruiker

ASP.NET Test Jan Van Ryckeghem

Handleiding Microsoft SQL Server configuratie

Technische nota AbiFire5 Rapporten maken via ODBC

Werken op afstand via internet

Installatie SQL Server 2012

Formulieren en waarden posten naar een view

Handleiding Module Security (Log in)

Installatie SQL: Server 2008R2

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Handleiding SQL server instellingen

Installatie van sqlserver

Installatie SQL Server 2014

Koppeling met een database

Technische nota AbiFire Rapporten maken via ODBC

File Uploads met standaard ASP.NET

MA!N Rapportages en Analyses

Installatie Avalanche Webview

Formulieren maken met Dreamweaver CS 4/CS 5

Open Safari op de Mac, ga naar de webpagina en klik op SSH scripts Mac OS X : Figure 1 SSH scripts downloaden

Formulieren maken met Dreamweaver CS 4

Beheer van databanken

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

Installatie SQL Server 2008R2

Handleiding website Buurten Met Uitzicht

return an ; } private I L i s t l i j s t ;

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at

Installatie Groeps Login app

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Katholieke Hogeschool Kempen

Handleiding SQL Server installeren en configureren t.b.v. 2Static voorraadbeheer database

Handleiding Reinder.NET.Tasks.SQL versie 2

Remote login Rekenbeest

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting

Hands-on TS adapter IE advanced

Handleiding website. Inloggen Start uw internet browser en ga naar

Handleiding CMS VOORKANT

INSTALLATIE EXCHANGE CONNECTOR

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

Absentie Presentie Server Migratie

Installatie PlanCare Dossier educatief

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Dynamiek met VO-Script

Datum: Gemaakt door: Berend de Groot Voor: ComSi, ROC Friese Poort

Shell Card Online e-invoicing Service Gebruikershandleiding. Versie 2.8

naar een SQL-server Rev 01

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Handleiding Word Press voor de bewoners Westerkaap 1

Gebruikers Handleiding

Handleiding E-Bike Connect VIP Premium.

Installatie en configuratie documentatie

Object Oriented Programming

Handleiding importeren HDN-browsercertificaat

En hoe gaan ze dit allemaal terugvinden?

RIVM - Peridos. Handleiding Instellen wachtwoord

BASIS- INRICHTING ORBIS TASKCENTRE 4.7

Sparse columns in SQL server 2008

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Installatiehandleiding. Facto minifmis

8. Koppeling met een database

Katholieke Hogeschool Kempen ASP

Saxion Research Cloud Drive (SRCD)

HANDLEIDING EXTERNE TOEGANG CURAMARE

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Handleiding Thuiswerken / CSG-Site / VPN-Access

Leerlingenhandleiding Beginnen met FlexBase

Bitrix Site Manager gebruikershandleiding BureauZuid

Data Warehouse Script Generator Doel

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Installatie King Task Centre

StabiCAD V Applicatiebeheer

5. Documenten Wat kan ik met Documenten? 1. Over LEVIY. 5.1 Documenten terugvinden Uitleg over vinden van documenten.

NHibernate als ORM oplossing

Gebruik webfolders Windows

Gebruikers- handleiding Porta

Access voor beginners - hoofdstuk 25

Orbis Software. Portal4U. Installatie Handleiding. Dit document bevat de Installatie Handleiding voor Portal4U

Handleiding 2designers Content Management Systeem

Leereenheid Webdesign

SportCTM 2.0 Startscherm trainer


Dieper in Visual Basic.Net

Handleiding. Verlinde Website

Installatiehandleiding Cane Webservices.nl Integratie

Installatie Avalanche Windows

TeD Tekst en Design. Basisinformatie voor gebruik van het cms Made Simple

IBIS-TRAD Handleiding installatie IBIS-TRAD databases (MS-SQL)

Logicworks CRM en Microsoft SQL Server 2005 (Express) Introductie

Handleiding: OpenEmm nieuwsbrief manager Diergaarde Blijdorp

Transcriptie:

Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus toepassen in een webapplicatie. We maken hier weer gebruik van de database Northwind op de MS SQL-server databaseserver. 2.1 Aanmelden bij SQL server We beginnen maar eens met een eenvoudige applicatie waarbij gegevens uit de database in een datagrid worden weergegeven. In grote lijnen kan dit op dezelfde manier als in een Windows-applicatie. Later zullen we zien dat een aantal zaken (zoals een connectionstring of query s) op een wat ander manier in de applicatie kan worden verwerkt. Vooralsnog gaan we een recht toe recht aan applicatie bouwen. Om gebruik te maken van SQL server moeten we eerst de gebruiker ASPNET aanmelden bij SQL server. Dit doe je als volgt: Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet. Figuur 2.1 Open in de Object Explorer (zie figuur 2.1) de map Security en daarna de map Logins. Je ziet dan de gebruikers die mogen inloggen op SQL Server. Klik rechts op de map Login en kies in het pop-up menu en kies hierin New login. Je ziet vervolgens het dialoogvenster van figuur 2.2 Vul bij loginnaam: %machinenaam%\aspnet in bij Default database: Northwind en bij Default language Dutch. Links boven in het scherm zie je Server Roles. Selecteer dit item en grand de gebruiker aan sysadmin. Om in te loggen op de server gebruik je Windows authentication. 2.1

Figuur 2.2 Je hebt nu de voorwaarden gecreëerd voor een ASP.NET SQL-server applicatie. Voordat je de applicatie gaat maken moet je wel eerst SQL-server en IIS starten. Verder moet de applicatie zijn opgeslagen in de map c:\inetpub\wwwroot. 2.2

2.2 De applicatie maken Wat moet de applicatie kunnen De applicatie heeft een inlogscherm, waarmee een klant (in de database Northwind) kan inloggen. De klant logt in met zijn klant_id en een wachtwoord. Het veld password moet daarom nog worden toegevoegd aan de tabel Customers van de database. Als de klant is ingelogd, dan moet hij een scherm te zien krijgen met al zijn gegevens. Deze gegevens moet hij zelf kunnen aanpassen. De opmaak van de pagina s mag je zelf bepalen, maar moet wel in een style sheet worden beschreven. Opdracht 2.2.1 In deze opdracht gaan we de database aanpassen. In de tabel Customers moet een veld met de naam password komen en in dit veld moet een versleuteld wachtwoord komen te staan. a. Voeg aan de tabel Customers een veld met de naam password toe. Het type van dit veld is varbinary(100). Het veld mag de waarde null hebben. Je gaat vervolgens in het veld password een versleuteld wachtwoord zetten. We gebruiken hiervoor de functie ENCRYPTBYPASSPHRASE gebruiken. Dit is een Transact SQL (T-SQL) functie. T-SQL is een uitbreiding op SQL met een aantal functionaliteiten die de uitvoering van SQL kunnen beïnvloeden. We gaan het versleutelde wachtwoord alfred in het veld password van de klant met klant_id alfki zetten. Een mogelijk SQL commando hiervoor is: UPDATE dbo.customers SET password=encryptbypassphrase('mijn voornaam', 'alfred') WHERE CustomerID='alfki' De twee parameters van de functie ENCRYPTBYPASSPHRASE zijn: 'Mijn voornaam' de passphrase. Dit is een beveiliging op het geïncrypte wachtwoord. Het is geen wachtwoord maar een wachtzin. In onze applicatie gaan we deze passphrase niet gebruiken, daarom gebruiken we voor elke klant dezelfde passphrase. 'alfred' het wachtwoord dat moet worden versleuteld. We gebruiken het volgende SQL commando: UPDATE dbo.customers SET password=encryptbypassphrase('sleutel', 'alfred') WHERE CustomerID='alfki' Deze query kun je gewoon uitoeren in SQL server Management Studio. b. Zet het versleutelde wachtwoord alfred in het veld password van de klant met klant_id alfki. Bekijk de tabel Customers en controleer of er in het veld password van de gebruiker met het klant_id alfki een versleuteld wachtwoord staat (zoiets als : 0x01000000C486F7B05BDC0167A41EF684FC7B3447CA29E40AA38DD7C2) 2.3

We gaan controleren of dit versleutelde wachtwoord wel het wachtwoord alfred voorstelt. Doe dit met het T-SQL commando: SELECT CONVERT(varchar(100),DECRYPTBYPASSPHRASE('sleutel', 0x01000000C486F7B05BDC0167A41EF684FC7B3447CA29E40AA38DD7C2)) as [Oorspronkelijk wachtwoord] Let hierbij op dat het versleutelde wachtwoord in dit commando niet tussen quotes staat. c. Controleer of het versleutelde wachtwoord wel het wachtwoord alfred voorstelt. d. Stel het T-SQL-statement op dat je straks gaat gebruiken om te controleren of de combinatie klant_id, wachtwoord bestaat. Gebruik in dit statement variabelen (b.v. @wachtwoord en @klant_id). Hieronder zie je een korte uitleg van hoe zo n statement is opgebouwd. Als je parameters of variabelen gebruikt in het statement, dan moet je ze eerst declareren. Hieronder zie je een voorbeeld van zo n declaratie. declare @wachtwoord varchar(100) Als je aan een variabele een waarde wilt toekennen dan gebruik je de operator set. Hieronder zie je een voorbeeld. set @wachtwoord='alfred' De variabelen kun je nu gewoon in je T-SQL statement gebruiken. Het gehele script kun je eventueel opslaan als stored procedure. De variabelen kun je binnen de stored procedure eventueel als parameters declareren. De statements met set zijn dan niet meer nodig. Je kunt deze stored procedure daarna in een applicatie gebruiken. Dan nu de applicatie. Opdracht 2.2.1 a. Ontwerp een inlogformulier op de pagina Default.aspx, met twee tekstboxen en een knop. De opmaak van dit formulier mag je geheel zelf bepalen in een style sheet. Het geheel moet als volgt werken: Voer een customder ID en een wachtwoord in en druk op de knop. Bestaat de combinatie custumer ID; versleuteld wachtwoord, dan wordt een nieuwe pggina geopend. Deze pagina noemen we klantgegevens.aspx. Bestaat de combinatie (custumer ID; versleuteld wachtwoord) niet, dan verschijnt op het inlogscherm dat het inloggen mislukt is. Op het nieuwe scherm (de vervolgpagina) is te zien wat de klant die is ingelogd heeft besteld. Ook het totaalbedrag aan bestelde artikelen moet zichtbaar zijn. Enige aanwijzingen: In dit geval hoef je in de tag: <form id="form1" runat="server"> het method en action attribuut niet gebruiken. 2.4

Gebruik voor de authenticatie van combinatie gebruikers ID; wachtwoord een stored procedure waarin het gedecrypte wachtwoord in de database wordt vergeleken met het ingevoerde wachtwoord in de betreffende tekstbox en het klant ID uit de database wordt vergeleken met met de betreffende tekstbox. Gebruik een DataReader om de gegevens uit voorgaande stored procedure vast te leggen en om te testen of de DataReader rijen bevat. Heeft de DataReader rijen, dan mag de gebruiker navigeren naar de volgende pagina. Voor navigatie naar een ander formulier binnen de applicatie gebruik de volgende regel: Server.Transfer("volgende_pagina.aspx"); Om een waarde uit de eerste pagina mee te nemen naar een vervolgpagina moet je het volgende doen: In de eerste pagina een globale public variabele declareren (var_a). Deze variabele een waarde geven (bijvoorbeeld de waarde van de tekst in een textbox). In de vervolgpagina aangeven wat de voorgaande pagina is. Dit doe je in het.aspx bestand van de vervolgpagina met de volgende regel: <%@ PreviousPageType VirtualPath="***" %> Op de plaats van *** komt de bestandsverwijzing van de vorige pagina. Deze verwijzing komt net onder de verwijzing <%@ Page Language="C#" %> te staan. In de vervolgpagina kun je nu heel simpel de public variabele uit de eerste pagina ophalen met de volgende code: var_b = PreviousPage.var_a; In dit codevoorbeeld is var_b een variabele die gedeclareerd is in de vervolgpagina en van hetzelfde type is als de variabele var_a. Deze techniek kun je in hoofdstuk 3 ook gebruiken wanneer je gegevens vanuit een formulier moet posten naar een andere webpagina. Er is ook een andere manier om gegevens van de ene naar de andere pagina te posten. Hiervoor kun je de helpfunctie van.net raadplegen bij het onderwerp cross-page postings. Gebruik in de vervolgpagina de component GridView voor het weergeven van de bestelde producten van de ingelogde klant. 2.5

2.3 Gebruik maken van een singleton klasse In de applicatie van 2.2.1 moet je op elke webpagina een connectie maken met de database. Wanneer je dit doet, dan moet je telkens een instantie van de klasse SqlConnection aanmaken. Wanneer je website uit veel pagina s bestaat en veel gebruikers van de betreffende connection gebruik maken, dan kan het geheugen van de webserver worden overbelast. Het is daarom raadzaam om hiervoor gebruik te maken van een techniek waarbij een klasse slechts dan wordt geïstantieerd als er geen instantie van die klasse in het geheugen van die server bestaat. De oplossing hiervoor is het toepassen van een singleton klasse. Een sigleton klasse is een voorbeeld van een zogenaamd design pattern. Een design pattern is een stukje code met een vastomlijnde structuur, met een bepaald doel. Het doel van het design pattern singleton is: het instantiëren van een klasse als er nog geen instantie bestaat. Bestaat er wel een instantie van die klasse, dan wordt dat object gebruikt en zal instantiëring niet plaatsvinden. Op deze wijze blijft het geheugengebruik van de server beperkt. Andere voorbeelden van design patterns zijn: factory en builder. Deze design patterns zullen niet in deze lesbrieven worden behandeld. Een singleton klasse ziet er in C#.NET als volgt uit: class ClsSingleton { private static ClsSingleton instantie=null; } private ClsSingleton() { } Uitleg van de code: public static ClsSingleton MaakInstantie() { if (instantie == null) { instantie = new ClsSingleton(); } return instantie; } De constructor is private. Deze kun je dus niet gebruiken voor instantiëring buiten de klasse zelf. Er is een private propertie instantie van het type ClsSingleton (de klasse zelf). Deze propertie is static, dat wil zeggen dat de propertie zonder instantiëring van de klasse kan worden gebruikt, of dat deze propertie kan worden gebruikt in een static methode. Dit laatste is het geval. De propertie instantie stelt een instantie van de klasse ClsSingleton voor. Deze instantie wordt op null gezet als teken dat voor de eerste instantiëring van de klasse er nog geen instantie is (wat logisch is). Er is een public methode MaakInstantie. Deze methode is static, dat wil zeggen dat deze methode zonder instantiëring van de klasse kan worden gebruikt. In de programmacode zal deze methode dan ook worden aangeroepen met de volgende code: ClsSingleton.instantieNaam. Deze methode returnt een propertie instantie van het type ClsSingleton (dus een instantie van de klasse zelf). Verder instantiërt deze methode de klasse ClsSingleton in het object instantie. Dit laatste gebeurt echter alleen als de waarde van het object instantie gelijk aan null is. Indien dit niet het geval is (dan bestaat het object instantie dus al), dan wordt de instantiëring niet uitgevoerd. Op deze wijze staat er altijd maximaal 1 instantie van de klasse ClsSingleton in het geheugen. 2.6

Verder kun je in de klasse op de gebruikelijke manier en plaatsen meer properties en methodes definiëren. In het programma TestSingleton zie je een testprogrammaatje waarin de instantiëring bij een singleton klasse wordt vergeleken met die van een gewone klasse. Het gebruiken van een singleton klasse in je programma. Het instantiëren van een singleton klasse gaat enigszins anders dan de instantiëring van een gewone klasse. Voor een gewone klasse: ClsGewoneKlasse objgewoon = new ClsGewoneKlasse(); Voor de singleton klasse uit ons voorbeeld: ClsSingleton objsingleton = ClsSingleton.MaakInstantie(); Merk op: de methode MaakInstantie() kan zonder instantiëring van de klasse worden gebruikt, omdat dit een static methode is. Verder kunnen de propertie instantie en de constructor niet worden gebruikt, omdat zij private zijn. Opdracht 2.3.1 Pas de applicatie van opdracht 2.2.1 aan door een singleton klasse toe te passen voor de connectie met SQL server. Omdat in de applicatie soms ook de connectie moet worden geopend, gesloten en moet worden toegekend aan een SqlCommand in het programma, moet je in de klasse minimaal de volgende methodes extra definiëren: OpenConnection() CloseConnection() GetConnection() Verder moet je de instantiëring van de klasse SqlConnection en het toekennen van de connectionstring in deze klasse doen. 2.7

2.4 De connectionstring onderbrengen in Web.config Elke ASP.NET applicatie heeft een bestand Web.config. In de solution explorer van je applicatie zie je het bestand. Als je erop dubbelklikt wordt het geopend. Als je dit bestand hebt geopend, dan zie je een hoeveelheid XML-code. Let op: ga niet zomaar veranderingen in deze code aanbrengen. De kans bestaat dan dat je applicatie niet meer werkt. Toch gaan we in Web.config iets veranderen. Ergens in dit bestand vind je de volgende regel: <connectionstrings /> Verander deze code in: <connectionstrings> <add name="northwindconnectionstring" connectionstring="***" /> </connectionstrings> Op de plaats *** komt de connectionstring te staan die je altijd gebruikt voor de connectie met SQL server. In je applicatie (bijvoorbeeld in de singleton klasse van opdracht 2.3.1) kun je deze connectionstring als volgt toepassen: Insert de namespace System.Configuration (using System.Configuration;) Om de connectionstring uit Web.config te halen, gebruik in de code: string strconnection = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; Opdracht 2.4.1 Pas de applicatie uit 2.3.1 aan door de connectionstring onder te brengen in Web.config en deze connectionstring te gebruiken in de singleton klasse met het connection object. 2.8