Hoofdstuk 22: Connected toegang

22.1         Inleiding Connected toegang
22.2         Klassen
22.3         Wijzigingen aanbrengen
22.4         Overige methoden
22.5         Stored procedure

Oefeningen hoofdstuk 22

22.1         Inleiding Connected toegang

Bij connected toegang wordt een rechtstreekse verbinding geopend met de database. Deze verbinding blijft open gedurende de verwerking van de gegevens. In het geheugen zit telkens slechts één record. Dit record kan enkel bewerkt worden via specifieke commando’s.

Connected toegang is niet belastend voor het geheugen maar wel voor het netwerkverkeer.
Top

22.2         Klassen

Connected toegang wordt beheerd door de onderstaande 2 klassen:

  • System.Data.SQLClient.SqlConnection: dit is de klasse om de verbinding met de database te openen en te sluiten:
  • System.Data.SQLClient.SqlCommand: dit is de klasse om gegevens op te vragen of aan te passen. Meestal is dit een SQL-instructie die uitgevoerd wordt bij het oproepen van de SQLCommand.

22.3         Wijzigingen aanbrengen: ExecuteNonQuery

In dit onderdeel is een oefening uitgewerkt om de postcode te wijzigen in de tabel tblKlanten van de database Artemis.

Maak in Visual Studio Express for Desktop een nieuw project aan “Hoofdstuk22”.

Figuur 22.1 Connected toegang: Aanmaken nieuw project

Figuur 22.1: Aanmaken nieuw project

Verander de naam van het standaardformulier Form1.cs in frmWijzigPostcode.cs en klik op OK.

Figuur 22.2 Connected toegang: Formuliernaam wijzigen

Figuur 22.2: Formuliernaam wijzigen e

Verander ook de Property Text in het design van het formulier in Postcode wijzigen.

Figuur 22.3 Connected toegang: Property Text wijzigen

Figuur 22.3: Property Text wijzigen

Voeg via het snelmenu Add, New Item een ADO.NET Entity Data Model toe met als naam Artemis.

Figuur 22.4 Connected toegang: ADO.NET Entity Data Model toevoegen

Figuur 22.4: ADO.NET Entity Data Model toevoegen

Selecteer EF Designer from Database om een model aan te maken op basis van een bestaande database.

Figuur 22.5 Connected toegang: Model aanmaken

Figuur 22.5: Model aanmaken

Klik op Next en kies de gewenste database, in dit geval ArtemisSQL.mdf.

Figuur 22.6 Connected toegang: Database selecteren

Figuur 22.6: Database selecteren

Beantwoord onderstaande vraag met Ja.

Figuur 22.7 Connected toegang: Bestand kopiëren naar het project

Figuur 22.7: Bestand kopiëren naar het project

Kies voor Entity Framework 6.x, klik op Next. Selecteer vervolgens alle onderdelen van de database die je wenst toe te voegen en klik op Finish.

Figuur 22.8 Connected toegang: Onderdelen van de database toevoegen

Figuur 22.8: Onderdelen van de database toevoegen

Voeg op het formulier een knop “POSTCODE WIJZIGEN” toe. Sleep vervolgens een SqlConnection naar het formulier. Wijzig de naam in cnnArtemisSQL en kies bij ConnectionString voor ArtemisSQL.mdf. Voeg daarnaast ook een SqlCommand toe met de naam scmdWijzigPostcode.

Figuur 22.9 Connected toegang: SqlConnection en SqlCommand toevoegen

Figuur 22.9: SqlConnection en SqlCommand toevoegen

Wanneer het tabblad Data van de Toolbox geen SqlConnection of SqlCommand bevat, voeg dan deze klassen toe door rechts te klikken in de toolbox en via het snelmenu Choose Items de gewenste klassen te selecteren.

Figuur 22.10 Connected toegang: Klasse toevoegen aan Toolbox

Figuur 22.10: Klasse toevoegen aan Toolbox

Kies in de Property Connection van de klasse scmdWijzigPostcode voor de bestaande verbinding cnnArtemisSQL.

Figuur 22.11 Connected toegang: Connection met SqlCommand

Figuur 22.11: Connection met SqlCommand

Door op de 3 puntjes te klikken bij de Property CommandText opent de Query Builder. Selecteer de gewenste tabel, namelijk tblKlanten. Kies vervolgens via het Snelmenu Change Type voor Update.

Figuur 22.12 Connected toegang: Query Builder

Figuur 22.12: Query Builder

Selecteer het veld Postnr en voer onderstaande SQL-instructie in. Klik vervolgens op OK.

Figuur 22.13 Connected toegang: SQL

Figuur 22.13: SQL

Wanneer op de knop Postcode Wijzigen geklikt wordt dan wordt de postcode 2000 van alle klanten gewijzigd naar postcode 3000. In een Messagebox wordt meegedeeld hoeveel records gewijzigd zijn. Achter de knop zit de onderstaande code:

Figuur 22.14 Connected toegang: Programmeercode

Figuur 22.14: Programmeercode

Het is van groot belang om de verbinding te verbreken (cnnArtemis.Close) nadat de data gewijzigd is. Indien dit niet gebeurt dan blijft de connection open staan. Dit kan problemen veroorzaken bij bezoekers omdat het aantal connections dat gelijktijdig geopend mag worden beperkt is.

Ziehier het resultaat wanneer op de knop gedrukt wordt.

Figuur 22.15 Connected toegang: Resultaat van het programma

Figuur 22.15: Resultaat van het programma

Top

22.4         Overige methoden

Om één gegeven uit de database op te vragen en weer te geven, wordt de methode ExecuteScalar gebruikt. Deze methode geeft de eerste kolom van de eerste rij van de resultaatset van het SELECT-SQL-statement.  Omdat het resultaat van het gegevenstype Object is moet er meestal een conversie van het type plaats vinden.

Met het SELECT-statement kunnen ook meerdere gegevens opgevraagd worden. De uitvoering hiervan gebeurt met de methode ExecuteReader. Met deze methode wordt bij een SqlCommand een SqlDataReaderObject gecreëerd.

In een SQL-statement kunnen ook parameters gebruikt worden. Via code wordt een waarde toegekend aan deze parameters. In SQL Server worden parameters aangeduid met een @.
Top

22.5         Stored procedure

Naast SQL-statements kunnen ook stored procedures gebruikt worden om gegevens uit een database te halen. Een stored procedure is eigenlijk een opgeslagen SQL-statement met uitgebreide programmeerinstructies. Stored procedures zijn vooral handig wanneer hetzelfde SQL-commando meermaals gebruikt wordt.

Met de property CommandType wordt bepaalt hoe de property CommandText geïnterpreteerd moet worden. De mogelijkheden zijn:

  • Text: SQL-statement (zie de methoden eerder dit hoofdstuk);
  • StoredProcedure: naam van een stored procedure in een SQL database;
  • TableDirect: alle gegevens van de tabel worden opgehaald.
Figuur 22.16: Property CommandType

Figuur 22.16: Property CommandType

Open de Database Explorer en rechtsklik op Stored Procedures om via Add New Stored Procedure een nieuwe stored procedure toe te voegen.

Geef de procedure de naam ProductenTeBestellen en voeg de onderstaande SQL-instructies toe.

Figuur 22.17: Stored Procedure

Figuur 22.17: Stored Procedure

Als bij CommandType de optie Stored Procedure geselecteerd wordt dan kan gekozen worden tussen de opgeslagen Stored Procedures.

Figuur 22.18: CommandType Stored Procedure

Figuur 22.18: CommandType Stored Procedure

De Stored procedure kan  getest worden door in het snelmenu van de Stored Procedure te kiezen voor Execute.

Figuur 22.19: Stored Procedure testen

Figuur 22.19: Stored Procedure testen

Top

Oefeningen Connected Toegang

Oefening 22-1     Herneem het uitgewerkte voorbeeld frmWijzigPostcode. Ontwerp een formulier frmWijzigPostcodeUitbreiding en voorzie een invoervak om zowel de te wijzigen als de nieuwe postcode in te voeren.

Oefening 22-2     Ontwerp een formulier frmPrijsVerhoging. Voorzie dit formulier van een knop waarmee de PrijsPerEenheid van alle producten verhoogd kan worden met 2 %.

Oefening 22-3     Ontwerp een formulier frmVerwijder. Met behulp van dit formulier kan de gebruiker de gegevens van de postmedewerkers uit de tabel tblWerknemers verwijderen.

Oefening 22-4     Maak een formulier frmAantal waarop het aantal klanten, het aantal werknemers en het aantal leveranciers getoond worden wanneer op de knop AANTAL OPVRAGEN gedrukt wordt. Omdat het aantal telkens met een ander SQL-statement opgehaald wordt, wordt de property CommandText niet ingevuld in het designvenster of in de Query Builder maar wel in de code.

Oefening 22-5     Herneem oefening 22-4 en zorg dat wanneer op de knop gedrukt wordt, ook de totale waarde van de voorraad wordt weergegeven.

Oefening 22-6     Ontwerp een formulier frmWerknemer waarop de naam en voornaam van alle werknemers alfabetisch op naam worden weergegeven in een listbox.

Oefening 22-7     Ontwerp een formulier waarop een keuzelijst voorzien is. In deze keuzelijst kan de gebruiker de naam van een klant selecteren. Automatisch verschijnt dan het aantal geplaatste orders.

Oefening 22-8     Breid de toepassing voor het wijzigen van de postcode verder uit. De huidige postcode kan in een keuzelijst geselecteerd worden en de nieuwe wordt ingevoerd in een tekstvak.

Oefening 22-9     Maak een formulier frmTeBestellen waarop productnummer en productnaam van de producten, waarvan de voorraad kleiner is dan het bestelpunt, worden weergegeven in een listbox. Maak hiervoor gebruik van een stored procedure.

OPLOSSINGEN
Top

Vorige          Volgende