Verbinding met MS Access Database
1. Inleiding / Uitleg
2. De database aanmaken en instellen
3. Verbinding maken
4. Gegevens ophalen
5. Gegevens toevoegen
6. Gegevens wijzigen
7. Gegevens verwijderen
8. Slot
1. Inleiding / Uitleg
In deze tutorial zal ik uitleggen hoe je een MS Access database laat communiceren met ASP.NET.
Eerst eenvoudig uitleggen hoe je verbinding maakt met de database en daarna
hoe je gegevens kan ophalen/invoegen/verwijderen.
> top
2. De database aanmaken en instellen
Als eerste beginnen we met het maken van de database. Open MS Access en maak een nieuwe database aan.
Sla deze op onder de naam 'test' (test.mdb).
Maak in de database 'test' in ontwerpweergave een nieuwe tabel aan en maak vijf kolommen:
Veldnaam |
Data Type |
ID |
Autonummering |
naam |
Tekst |
voornaam |
Tekst |
leeftijd |
Numeriek |
geslacht |
Tekst |
Als je klaar bent sla je deze tabel op als 'leden'. Zo, het database-werk is klaar.
Zoals je ziet is het 'maar' een eenvoudige database, maar het is om vertrouwd te geraken
met het principe.
> top
3. Verbinding maken
Om verbinding te maken met een database is er een "connectionstring" nodig.
Dit is eigenlijk de configuratie: met welke database ga ik verbinding maken,
wat is de provider, wat is de gebruiker en zijn paswoord...
Hieronder staat een eenvoudige connectionstring om verbinding te maken met de database 'test.mdb'.
OleDbConnection verbinding = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = test.mdb");
Nu gaan we deze connectionstring in een aspx-pagina gieten.
<%@ Page Language="C#"%> <%@ Import Namespace="System.Data.OleDb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e) { OleDbConnection verbinding = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = LOCATIE\test.mdb");
try { verbinding.Open();
if (verbinding.State.ToString() == "Open") { label_een.Text = "Verbinding gemaakt"; } } catch (Exception x) { label_een.Text = x.Message; } finally { verbinding.Close(); } }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Verbinding maken met een MS Access DataBase</title> </head> <body> <form id="form_een" runat="server"> <div align="center"> <asp:Label ID="label_een" runat="server" /> </div> </form> </body> </html>
Sla het bestand op als "verbinding.aspx"
Zorg dat de database en de aspx-file in dezelfde map, anders moet je de connectionstring aanpassen.
> top
4. Gegevens ophalen
Nu de verbinding met de database tot stand is gebracht is het de bedoeling dat daar iets mee gebeurt.
Als eerste gaan we gegevens ophalen uit de database. Zorg ervoor dat er enkele gegevens in je DB staan.
Open MS Access en open je database (test.mdb) en dan de tabel 'leden'. Vul wat gegevens in en
sluit MS Access.
Om de gegevens op te halen maken we gebruik van een 'DataReader'. Een DataReader gaat simpelweg gegevens
uit een database uitlezen. Je kan deze daarna weergeven op je pagina hoe jij wilt.
In het script hieronder worden de naam, voornaam, leeftijd en geslacht opgevraagd. We kleden het geheel een
beetje aan door er een mini-profiel van te maken. Het formulier is exact hetzelfde als dat van daarjuist,
enkel de code is anders...
protected void Page_Load(object sender, EventArgs e)
{ OleDbConnection verbinding = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = LOCATIE\test.mdb"); OleDbDataReader myReader; OleDbCommand myCommand; string query, resultaat;
resultaat = ""; query = "SELECT naam, voornaam, leeftijd, geslacht FROM leden";
myCommand = new OleDbCommand(query, verbinding); try { verbinding.Open(); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { resultaat += "Volledige naam: " + myReader.GetString(0) + " " + myReader.GetString(1) + "<br />"; resultaat += "Leeftijd: " + myReader.GetInt32(2).ToString() + "<br />"; resultaat += "Geslacht: " + myReader.GetString(3) + "<br /><br />"; } myReader.Close();
label_een.Text = resultaat; } catch (Exception x) { label_een.Text = x.Message; } finally { verbinding.Close(); }
}
Je stelt een query op, maakt een OleDbCommando aan en geeft de query en de verbinding mee. Daarna open je de verbinding
en geef je de opdracht aan de DataReader door de OleDbCommand uit te voeren. Zolang de DataReader leest zet hij de gegevens
bij in de variabele 'resultaat'. Als alle gegevens zijn gelezen sluit je de DataReader en zet je de waarde van het label op
de variabele 'resultaat'. Zo worden alle gegevens netjes weergegven.
> top
5. Gegevens toevoegen
Om gegevens toe te voegen is er wat meer nodig. Een formuliertje waarin je de gegevens invult en een ander stukje code.
Je steekt de ingevoerde waardes in variabelen en die gebruik je dan in je query. Let wel: in het scriptje hieronder gebeurt
er geen controle op de invoer (lege invoer, sql-injection, ...). Voor invoervalidatie zie de tutorial "Validaties".
<%@ Page Language="C#"%> <%@ Import Namespace="System.Data.OleDb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e) { } protected void knop_Click(object sender, EventArgs e) { OleDbConnection verbinding = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = LOCATIE\test.mdb"); OleDbCommand myCommand; string query, v_naam, a_naam, age, geslacht;
v_naam = Server.HtmlEncode(naam_invoer.Text); a_naam = Server.HtmlEncode(achternaam_invoer.Text); age = Server.HtmlEncode(age_invoer.Text); geslacht = Server.HtmlEncode(geslacht_invoer.Text); query = "INSERT INTO leden (naam, voornaam, leeftijd, geslacht) VALUES ('" + v_naam + "', '" + a_naam + "', '" + age + "', '" + geslacht + "')"; myCommand = new OleDbCommand(query, verbinding); try { verbinding.Open(); myCommand.ExecuteNonQuery(); label_een.Text = "Succesvol toegevoegd"; } catch (Exception x) { label_een.Text = x.Message; } finally { verbinding.Close(); } }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Verbinding maken met een MS Access DataBase</title> </head> <body> <form id="form_een" runat="server"> <div align="center"> <asp:Table ID="tabel_een" runat="server"> <asp:TableRow> <asp:TableCell HorizontalAlign="Right"> Voornaam: <asp:TextBox ID="naam_invoer" runat="server" /> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell HorizontalAlign="Right"> Achternaam: <asp:TextBox ID="achternaam_invoer" runat="server" /> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell HorizontalAlign="Right"> Leeftijd: <asp:TextBox ID="age_invoer" runat="server" /> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell HorizontalAlign="Right"> Geslacht: <asp:TextBox ID="geslacht_invoer" runat="server" /> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell> <asp:Button ID="knop_toevoegen" runat="server" Text="Toevoegen" OnClick="knop_Click" /> </asp:TableCell> </asp:TableRow> </asp:Table> <asp:Label ID="label_een" runat="server" /> </div> </form> </body> </html>
> top
6. Gegevens wijzigen
Soms moeten gegevens gewijzigd worden, denk maar aan iemand die zijn/haar paswoord wil veranderen.
Je geeft een naam in en een nieuwe naam. De naam die al in de database staat zal dan vervangen worden door de nieuwe.
<%@ Page Language="C#"%> <%@ Import Namespace="System.Data.OleDb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e) { } protected void knop_Click(object sender, EventArgs e) { OleDbConnection verbinding = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = LOCATIE\test.mdb"); OleDbCommand myCommand; string query, naam, invoer;
invoer = Server.HtmlEncode(naam_invoer.Text); naam = "nieuwe naam"; query = "UPDATE leden SET naam = '" + naam + "' WHERE naam = '" + invoer + "' "; myCommand = new OleDbCommand(query, verbinding); try { verbinding.Open(); myCommand.ExecuteNonQuery(); label_een.Text = "Succesvol gewijzigd"; } catch (Exception x) { label_een.Text = x.Message; } finally { verbinding.Close(); } }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Verbinding maken met een MS Access DataBase</title> </head> <body> <form id="form_een" runat="server"> <div align="center"> <asp:TextBox ID="naam_invoer" runat="server" /> <asp:Button ID="knop_een" runat="server" Text="Verwijderen" OnClick="knop_Click" /> <br /> <asp:Label ID="label_een" runat="server" /> </div> </form> </body> </html>
> top
7. Gegevens verwijderen
Als laatste gaan we gegevens verwijderen uit de database. Dit is eigenlijk heel gemakkelijk.
Alleen een naam ingeven, en dan op de knop klikken. Hierdoor worden alle gegevens van de ingevoerde waarde uit de database verwijderd.
Het formulier is hetzelfde als dat van hierboven, alleen de code is anders.
protected void Page_Load(object sender, EventArgs e) { } protected void knop_Click(object sender, EventArgs e) { OleDbConnection verbinding = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = LOCATIE\test.mdb"); OleDbCommand myCommand; string query, naam; naam = Server.HtmlEncode(naam_invoer.Text); query = "DELETE * FROM leden WHERE naam = '" + naam + "' "; myCommand = new OleDbCommand(query, verbinding); try { verbinding.Open(); myCommand.ExecuteNonQuery(); label_een.Text = "Succesvol verwijderd"; } catch (Exception x) { label_een.Text = x.Message; } finally { verbinding.Close(); } }
> top
8. Slot
Dit is het einde van de tutorial, ik hoop dat jullie er iets van hebben kunnen leren. Hou er wel rekening mee
dat dit allemaal heel eenvoudige voorbeelden zijn en dat er GEEN controles is op invoer omdat dat hier niet
het onderwerp was. Gewoon met eenvoudige voorbeelden hoe je C#.NET met MS Access laat samenwerken!
In geval van vragen/commentaar kan je een reactie posten...
> top
|