Database verbinding met Java

Java geeft de mogelijkheid om een database verbinding te maken met een lokaal Microsoft Office Access bestand. Hiermee kun je makkelijk de verzamelde data overzichtelijk indelen en gebruiken. In dit bericht zullen de eerste stappen worden gezet over een lokale database verbinding met Java. Deze tutorial is voor beginners niveau.

Voor verbinding zijn als basis vier klassen te maken. De main klasse, de database interface, de tabel klasse en de tabel-database klasse. Hieronder wordt uitgelegd wat ze doen.

Main klasse voor de database

Deze klasse verzorgt de communicatie met de database. Hier worden de methodes gemaakt om een connectie te maken en te sluiten. De top level operaties staan in deze klasse.

package database;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 * De klasse voor de communicatie met de database.
 *
 * @author Jan Broos
 */
public class MainDB implements DBInterface {
	KlantDB adb;
	Connection connection;
	private Klant klant;

	/**
	 * Constructor, behandeld het maken van de connectie met de database.
	 */
	public MainDB() {
		try {
			connection = DriverManager.getConnection(url, "", "");
			adb = new KlantDB(connection);
		} catch (SQLException sqlException) {
			sqlException.printStackTrace();
			JOptionPane.showMessageDialog(null, "Database connectie mislukt.");
			System.exit(1);
		}
	}

	/**
	 * Sluit de database connectie.
	 *
	 * @param connection
	 */
	public void closeConnection() {
		try {
			connection.close();
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "Er is een fout opgetreden bij het sluiten van de database connectie.");
			e.printStackTrace();
		}
	}

	/**
	 * Geeft een array lijst van klanten terug.
	 */
	public void printKlantenLijst() {
		for(int i = 0; i < adb.getSize(); i++){
			System.out.println();
			System.out.print(adb.alleKlanten().get(i).getKlantID());
			System.out.print("\t");
			System.out.print(adb.alleKlanten().get(i).getKlantNaam());
			System.out.print("\t");
			System.out.print(adb.alleKlanten().get(i).getProductNaam());
			System.out.print("\t");
			System.out.print(adb.alleKlanten().get(i).getKosten());
			System.out.print("\t");
		}
	}

	/**
	 * Voegt een nieuwe klant toe aan de db, checkt op id.
	 *
	 * @param _id, het id van de klant.
	 * @param _custName
	 * @param _custDir
	 * @param _programDir
	 */
	public void nieuweKlant(int _id, String _klantNaam, String _productNaam, int _kosten) {
		klant = new Klant(_id, _klantNaam, _productNaam, _kosten);
		adb.nieuweKlant(klant);
	}

	/**
	 * Geeft de eerstvolgende ID in de database.
	 *
	 * @return id+1
	 */
	public int getNextID() {
		return adb.alleKlanten().size() + 1;
	}
}

De database interface

Om te zorgen dat Java een representatie heeft van de database wordt er een interface aangemaakt. Dit geeft de globale structuur van de database weer. Ook wordt de ODBC link gegeven naar de locatie van de database.

package database;

/**
 * Deze klasse definieert enkele constanten voor toegang tot de gebruikte database
 *
 * @author Jan Broos
 */
public interface DBInterface {

	/**
	 * De representatie van de database tabel.
	 */
	public enum DatabaseTabellen {
		Tabel1;
	}

	/**
	 * De representatie van de attributen uit de database.
	 */
	public enum KlantVeldnamen {
		KlantID, KlantNaam, ProductNaam, Kosten;
	}

	/**
	 * Een String constante die bestaat uit de naam van de database driver en de
	 * naam van de (MS Access) data base zelf.
	 */
	static final String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=CustomerDatabase.mdb";

}

De tabel en de tabel-database klasse worden in deel 2 van een database verbinding met java behandeld.