Databanken programmatorisch benaderen met Visual Studio 2013 HA-2267-01 Informaticabeheer Bert Cauwenberg en Lieven Pauwels Werkgroep Handel 2015 Vlaams Verbond van het Katholiek Secundair Onderwijs Guimardstraat 1, 1040 Brussel
Vlaams Verbond van het Katholiek Secundair Onderwijs Guimardstraat 1, 1040 Brussel Databanken programmatorisch benaderen met Visual Studio 2013 HA-2267-01 Informaticabeheer Bert Cauwenberg en Lieven Pauwels Werkgroep Handel 2015 http://handel.vvkso.net D/2010/7841/056 Alle rechten voorbehouden. Behoudens de uitdrukkelijk bij wet bepaalde uitzonderingen mag niets uit deze uitgave worden verveelvoudigd, opgeslagen in een geautomatiseerd gegevensbestand of openbaar gemaakt, op welke wijze ook, zonder de uitdrukkelijke voorafgaande en schriftelijke toestemming van het VVKSO.
Inhoud 1 Inleiding... 5 1.1 Data(banken) in het lagenmodel... 5 1.2 Terminologie en afkortingen... 6 1.2.1 Databanken... 6 1.2.2 Enkele afkortingen... 6 1.3 Situering in de leerstof programmeren... 7 2 Gegevens opslaan vanuit een toepassing: scoresysteem voor DiceGame... 8 2.1 Probleemstelling... 8 2.1.1 Probleemomschrijving... 8 2.1.2 Beginsituatie DiceGame -toepassing... 9 2.1.3 Aanpassen van de interface aan speler-functionaliteit... 11 2.2 Probleemanalyse: score-functionaliteit voorzien... 13 2.2.1 Bijhouden en tellen van de score... 13 2.2.2 Aanpassing interface... 13 2.2.3 Opslaan in een globale variabele... 14 2.2.4 Opslaan in een bestand... 14 2.2.5 Opslaan in een databank... 15 2.2.6 Overzicht van de cursusopbouw... 16 2.3 Implementatie score-telling (herhaling uit HA-2266-01)... 17 2.3.1 Klassendiagram... 17 2.3.2 Voorbeeldcode: de klasse Speler... 18 2.3.3 Voorbeeldcode: score-telling DiceGame... 19 2.3.4 Noot... 20 2.4 Score opslaan in een bestand... 21 2.4.1 Structuur voor persistence code in de solution... 21 2.4.2 Klassendiagram... 23 2.4.3 Manier om gegevens op te slaan (TXT)... 24 2.4.4 Voorbeeldcode: persistence voor DiceGame (opslag in bestand)... 24 2.4.5 StreamWriter... 25 2.4.6 Samenvatting en aandachtspunten... 26 2.4.7 Oefeningen... 28 2.4.8 Uitbreiding: andere manier om gegevens op te slaan (CSV)... 31 2.4.9 Besluit... 33 3 Terminologie i.v.m. databanken... 34 3.1 Enkele datamodellen... 35 3.1.1 Plat datamodel... 35 3.1.2 Hiërarchisch datamodel... 35 3.1.3 Netwerk-datamodel... 36 3.1.4 Relationeel datamodel... 36 3.1.5 Objectgeoriënteerd datamodel... 37
3.2 Enkele DBMS en... 38 3.2.1 MS Access... 38 3.2.2 MS Access SQL... 38 3.2.3 MS SQL Server... 39 3.2.4 MySQL... 39 3.2.5 FireBird en JayBird... 39 3.2.6 Oracle Database... 40 3.3 Databanken en programmeren... 41 3.3.0 ODBC en Microsoft-API s... 41 3.3.1 Repositories... 44 3.3.2 Mappers... 44 3.3.3 Samenvatting... 45 4 Gebruik van MySQL en ADO.NET met C#...46 4.1 Basisbegrippen i.v.m. ADO.NET... 46 4.1.1 ADO.NET... 46 4.1.2 Connected en disconnected... 46 4.1.3 MySQL en.net... 47 4.2 Lokale installatie van MySQL... 48 4.2.1 Vereiste producten en features... 48 4.2.2 Installatie voor Windows 8.1 en Visual Studio 2013... 48 4.2.3 Een MySQL Server herconfigureren... 57 4.2.4 MySQL-producten en -features troubleshooten, updaten of verwijderen... 59 4.2.5 Opstarten van een lokale MySQL-server... 61 4.2.6 Een reference toevoegen aan de MySql.Data-library... 63 4.3 MySQL-databanken gebruiken in Visual Studio... 64 4.3.1 Verbinden met een MySQL-databank... 64 4.3.2 Een MySQL-databank aanmaken... 67 4.3.3 Toevoegen van tabellen... 69 4.3.4 Een tabel voorzien van een primaire sleutel... 70 4.3.5 Gegevens opvragen en toevoegen in de GUI van Visual Studio... 72 4.3.6 Relaties definiëren tussen tabellen... 73 4.3.7 Een bestaand MySQL-databank-bestand toevoegen... 74 4.3.8 Connection strings... 75 4.4 MySQL-statements... 76 4.4.1 Algemene syntax... 76 4.4.2 Soorten queries... 76 4.4.3 LINQPad... 77
5 Voorbeelden en oefeningen... 78 5.0 Stappenplan en aandachtspunten... 78 5.0.1 Stappenplan... 78 5.0.2 Aandachtspunten i.v.m. de werkwijze... 79 5.0.3 Schematische weergaven... 82 5.0.4 Tips aangaande de Visual Studio-solutions... 84 5.1 Voorbeeld: Namen van leerlingen opslaan... 86 5.1.1 Probleemstelling... 86 5.1.2 Ontwerp UI en user interaction... 86 5.1.3 Klassendiagram... 87 5.1.4 Structuur van de databank... 89 5.1.5 Structuur van de solution... 89 5.1.6 Voorbeeldcode: Namen... 90 5.1.7 Uitbreiding: de DataSource-eigenschap van een ListBox... 92 5.1.8 Uitbreiding: de gegevens gesorteerd weergeven... 93 5.1.9 Oefeningen... 95 5.2 Voorbeeld: DiceGame met een score-databank... 96 5.2.1 Uitgangspunten... 96 5.2.2 Klassendiagram... 97 5.2.3 Samenwerking tussen business controller, repository en persistence controller... 98 5.2.4 Structuur van de databank... 98 5.2.5 Structuur van de solution... 98 5.2.6 Voorbeeldcode: score-databank gebruiken voor DiceGame... 99 5.2.7 Oefeningen... 101 5.3 Oefening... 103