Access database met parameters geplaatst op 05.06.2008, 17:27:10.
Categorie:
VB.NET 2008.
Ik heb de commentaar van Arcomar in overweging genomen en bij deze heb ik besloten om een Tip te geven hoe je je data kan: inlezen, ophalen, inserten en verwijderen met parameters.
We maken een nieuw 'Windows Form' project aan.
Plaats hierop volgende compontenten:
-1 DataGridView: dgvAutos
-2 Labels: lblMerk, lblType, lblId
-3 Textboxen: txtMerk, txtType, txtId(ReadOnly)
-4 Buttons: btnLeegmaken, btnInsert, btnUpdate, btnDelete
Like so :
1. Inlezen
We gaan nu de database toevoegen aan ons project.
De database die ik gebruik kan je hier downloaden: http://hypenate...base/db1.rar (Unpakken met winRAR of iets dergelijks)
Eerste en vooral is het sterk aangeraden om de database in je Bin\Debug map te plaatsen in mijn geval is dat: "C:\Users\pC\Documents\Visual Studio 2008\Projects\VBIBAccess\VBIBAccess\bin\Debug".
Dan rechtermuisknop op je projectnaam > Add > Existing Item in de 'Solution Explorer.
En dan zoek je je database die in je Bin/Debug staat. Wel even zien dat hij "All Files" of "Database Files" zoekt.
Dan vink je "Tables" aan en klik je op Finish. Hij maakt vanzelf een dataSet aan...Deze kan verwijderd worden.
Om de connectieString op te vragen doe je het volgende:
In de 'Server Explorer', rechtermuisknop op je database > Properties.
En dan rechtsonder in het vak 'Properties' dubbelklik je op de eigenlijke connectiestring zodat hij helemaal geselecteerd is en dan rechtermuisknop > Kopiëren.
Zo, Nu ga je de code kijken en plaats je deze regel onder Public Class Form1:
Je moet wel even de quotes herschikken en het laatste stukje wegdoen.
We gaan hier ook in één keer onze dataTable maken.
Ook de OleDbConnection gaan we hier aanmaken
Bij de 'connectie' heb ik de connectieString meegegeven die we twee regels hoger hadden gedeclareerd
We maken een nieuwe Sub procedure "dataLezen" en voegen deze zin toe:
Ik geef de SQL-opdrachtmee (alles selecteren van tabel tblCars) dat moet uitgevoerd worden en de connectie.
De dataAdapter is eigenlijk een tussenstuk van je database en je programma. Je kan het zien als, indien je een iet wat abstract denkvermogen hebt, de stroomkabel tussen je PC en het stroomnet.
Dus momenteel zou de dataAdapter onze gegevens bezitten. Om deze door te geven naar onze dataTable gebruiken we de .Fill optie.
Voeg deze 2 zinnen toe aan de sub:
Nu bezit onze dataTable de gegevens. En de clear gaat ervoor zorgen dat als we inlezen, inserten/updaten/verwijderen en terug inlezen, dat we de database geen 2 keer gaan laden. (Als je juist wil weten wat ik bedoel zet je deze zin even op commentaar voor je gaat testen bij de insert).
Ga nu naar 'Designer Mode' en dubbel klik op het form, zodat je in de Visual Studio voor ons de 'Load' sub aanmaakt.
Hierin plaatsen we onze sub 'DataLezen()' en plaatsen we de dataSource van onze DataGridView.
Als we ons project opstarten, zie je dat onze DataGridView gevuld is met gegevens.
Ik geef even een overzicht van het hele project tot nu toe:
2. Databindings
Databindings zorgen ervoor dat in de textvakken, de waardes (kunnen) komen die er geselecteerd worden in een combox of iets dergelijks. In ons geval de DataGridView.
In onze "Load" sub plaatsen we de DataBindings:
De uitleg: Het type is Text vanuit de dataTable dtAutos, en de kolom die je eruit wil is "ID" (de zelfde naam als in de database dus).
Als je je project nu start, kan je zien dat als je wat selecteerd uit je database de TextBox'en de overeenkomstige waardes bevatten!
Tot zover het Inlezen van gegevens en de databindings hiervan.
3. Insert
Om een insert te doen met parameters, is het niet nodig om een nieuwe subprocedure te maken.
Ga naar 'Designer Mode' en dubbelklik op de Button "Insert" en voeg onderstaande code toe.
De tweede regel gaat het Insert command zetten, zoals je ziet geef ik de 2 kolommen mee waar hij bepaalde waardes (values) moet insteken.
Zoals je kan staan er voor die Values een @-teken, dit wordt gedaan als mijn gebruik gaat maken van zogenaamde 'placeholders'.
Zoals je ziet vul ik de parameters in, en "vul" ik de placeholders (@Merk en @Model) in die we hadden geplaatst bij onze InsertCommand met respectievelijk txtMerk.Text en txtType.Text. Ik geef tevens ook het "type" van @Merk en @Model mee, hiermee bedoel ik of het String (VarChar) of Integer (Numeriek) is. Deze moet evereen komen gelijk je je de Access database je veld-types hebt gekozen.
Daarna open ik de connectie, ik voel een ExecuteNonQuery() uit, dit is het moment waarop hij de eigenlijke opdracht gaat uitvoeren en de waardes in onze database gaat plaatsen. Achteraf sluit ik de connectie terug en ga'k de gegevens opnieuw inlezen zodat onze dataGridView direct wordt geupdate.
Voor gemakshalve gaan we terug 'Designed Mode' en dubbelkliken we op de Button "Leegmaken".
In de click sub plaatsen we:
Dit geheel terzijde, maar maakt het net iets makkelijker :).
Run nu het programma, klik op de Button "Leegmaken", en voeg dan de de vakken "Merk en Type" in. Klik dan op de Button "Insert".
Als je nu terug naar beneden scrolt zal je zien dat je merk en type toegevoegd zijn.
3. Update
Ga naar 'Designer Mode' en dubbelklik op de Button "Update".
Bij de 'Click' sub voegen we een gelijkaardige code toe als bij Insert.
Het woord "InsertCommand" is nu "UpdateCommand" geworden en het SQL-command is veranderd.
En dan de placeholder @ID die word ingevuld. Let op dat deze van het type Integer is omdat onze kolom in de database het veld-type 'AutoNummering' heeft.
Als je het programma nu runt, een rij selecteerd, de gegevens aanpast (en dus niet op "Leegmaken" klikt, want dan zal het programma crashen. Ik hou het allemaal zo simpel mogelijk) en dan op "Update" klikt. Word je aanpassing doorgevoerd.
4. Delete
Ga naar 'Designer Mode' en dubbelklik op de Button "Delete".
Bij de 'Click' sub voegen we een gelijkaardige code toe als bij Insert en Update: