Ms Access en C#

  1. Inleiding
  2. Ms Access
  3. Voorbeeldprogramma
  4. Slot

Inleiding

In de post over Streams en bestanden hebben we laten zien hoe we gegevens wegschrijven naar een tekstbestand en hoe we de gegevens uit dat tekstbestand kunnen ophalen.

Je gegevens blijven met tekstbestandjes in ieder geval bestaan en ze zijn niet weg zodra je de computer uitzet, maar het heeft niet veel structuur. Het heeft wat weg van een notitie op een post-it waarbij je de post-it ergens bewaart. Je zult op een gegeven moment steeds meer notities hebben en vind je alles dan nog wel terug?

Een database kan in zulke gevallen uitkomst bieden. Een database heeft als voordeel dat ze veel gegevens kan bevatten en dat gemakkelijk naar de gewenste informatie gezocht kan worden waarbij het gezochte ook nog eens snel boven water komt. In deze post laten we zien hoe we met C# een Ms Access database benaderen.

up | down

Ms Access

Ms Access is een database management systeem (DBMS) van Microsoft en de eerste versie werd alweer in 1991 uitgebracht. Het product wordt heden ten dage nog steeds door Microsoft ondersteund en het is terug te vinden in de Microsoft Office Suite. De suite bevat meerdere producten en zo zul je in die suite ook Ms Excel en Ms Word tegenkomen.

Een computerprogramma heeft via een API (Application Programming Interface) interactie met een DBMS. Microsoft had voor Ms Access databases de ODBC (Open Database Connectivity) API ontwikkeld, maar deze API werd later opgevolgd door de OLEDB (Object Linking and Embedding, Database) API. We gebruiken in onderstaand voorbeeld voor de interactie met de Ms Access database een OLEDB API.

up | down

Voorbeeldprogramma

We creëeren een tabel in een Ms Access database en we geven het de naam tblEigenaar. De tabel heeft de volgende inhoud:

In het voorbeeldprogramma gebruiken we de System.Data.OLEDb library en (o.a.) een klasse OleDbDataReader om de inhoud van de Ms Access tabel op te vragen. We hoeven niet alles te zien en we selecteren alleen de auto eigenaren die woonachtig zijn in  regio “Noord”. We sorteren op omschrijving.

using System;
using System.Data.OleDb;
namespace MSACCESS
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine(
      "*** Begin programma ***\r\n");
      
      string connectieString = 
         @"Provider=Microsoft Office 15.0 
         Access Database Engine OLE DB Provider;" +
         @"Data source=C:\....\Voorbeeld.accdb";
      
      string SQLString 
          = "SELECT * 
             FROM tblEigenaar 
             WHERE Regio='Noord' 
             ORDER BY omschrijving";
      
      try
      {
        using (OleDbConnection oleDbConnection 
        = new OleDbConnection(connectieString))
       {
         OleDbCommand oleDbCommand = 
         new OleDbCommand(SQLString, oleDbConnection);
         
         // Open
         oleDbConnection.Open();
                  
         using (OleDbDataReader oleDbDataReader = 
         oleDbCommand.ExecuteReader())
         {
           while (oleDbDataReader.Read())
           {
             // Id
             Console.Write(
             "{0}. ", 
             oleDbDataReader.GetValue(0).ToString());
             
             // omschrijving
             Console.WriteLine(
             "{0}", oleDbDataReader.GetValue(1));
           }
           
           // Close
           oleDbDataReader.Close();
         }
       }
      }
      
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
      }

      finally
      {
        Console.WriteLine(
        "\r\n*** Einde programma ***");
        Console.ReadLine();
      }
      
    }
  }
}

En we krijgen dit resultaat:

*** Begin programma ***

4. Jan's auto
7. Piet's auto
1. Sandra's auto

*** Einde programma ***

Klasse OleDbDataReader is specifiek bestemd voor OLEDB data sources (Ms Access), maar OLEDB is niet de enige data source en data sources zijn er inmiddels in allerlei soorten en maten. Gelukkig is voor bijna elke data source wel een klasse te vinden dat de data source laat doen ontsluiten voor de buitenwereld.

up | down

Slot

In deze post heb ik laten zien hoe je gegevens ophaalt uit een database. We hebben de Ms Access DBMS gebruikt en een aantal records uit een tabel geselecteerd waarbij we de geselecteerde records gesorteerd hebben laten doen verschijnen.

Ms Access is bedoeld voor de kantooromgevingen met een wat kleinere gegevensverzameling. Voor de grote gegevensverzamelingen zal je op een gegeven moment moeten upgraden naar producten die daar speciaal voor zijn bedoeld. In veel gevallen gaat men over op SQL Server, maar er zijn talloze andere alternatieven te vinden voor SQL Server.

Hopelijk ben je met deze posting weer wat wijzer geworden en ik hoop je weer terug te zien in één van mijn volgende blog posts. Wil je weten wat ik nog meer over C# heb geschreven? Hit the C# button…


up

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *