JDBC mit Microsoft Access ohne ODBC-Datenquelle: Direktes Lesen von .mdb-Dateien in Java

Informatik4,31 KB

JDBC-Datenbanken mit Microsoft Access

Direktes Lesen einer .mdb-Datei ohne Einrichtung einer Datenquelle im ODBC-Manager

/*
 * JDBC-Datenbanken mit Microsoft Access
 * LESEN einer Datei direkt aus *.mdb
 * Ohne Einrichtung der Datenquelle im ODBC-Manager
 */

import java.sql.*;

// KLASSE HAUPTPROGRAMM
public class Access_sin_odbc
{

    // MAIN-Methode als Einstiegspunkt des PROGRAMMS
    public static void main(String[] args)
    {
        try
        {
            System.out.println("\nJDBC Access");
            System.out.println("===========");

            // Connection String mit dem physischen Pfad zur Datenbank
            String db = "D:\\Ordner\\Unterordner\\AccessBD_1.mdb";
            // Falls sich die DB im Ordner der Java-Anwendung befindet:
            // String db = "AccessBD_1.mdb";
            String url = "jdbc:odbc:MS Access-Datenbank;DBQ=" + db;

            // JDBC-Treiber registrieren mit Class.forName (Classloader)
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("\nEstableciendo conexión...");
            Connection con = DriverManager.getConnection(url, "", "");
            System.out.println("\nConexión establecida: \"" + db + "\".");
            System.out.println("");

            // Ausführen einer SQL-SELECT-Anweisung
            Statement select = con.createStatement();
            ResultSet nombres = select.executeQuery("SELECT TOP 8 * FROM Tabla1 ORDER BY id");
            System.out.println("Lesen der ersten 8 Datensätze:");
            System.out.println("");
            System.out.println("\tNombre");
            System.out.println("");
            int col = nombres.findColumn("Nombre");
            boolean siguiente = nombres.next();
            while (siguiente)
            {
                System.out.println("\t" + nombres.getString(col));
                siguiente = nombres.next();
            }

            System.out.println("");

            // Freigabe der Ressourcen
            nombres.close();
            select.close();

            // Informationen über den Manager der DB und die DB abrufen

            /* Das Interface ResultSet stellt eine Datenmenge aus einer SQL-Abfrage dar.
             * Um auf Datensätze zuzugreifen, positioniert sich ein Cursor zunächst
             * vor dem ersten Datensatz. Um durch die Datensätze zu navigieren,
             * wird die Methode resultSet.next() verwendet. */
            DatabaseMetaData dm = null;
            ResultSet rs = null;
            dm = con.getMetaData();
            rs = dm.getCatalogs();

            System.out.println("Informationen über den Treiber:\n");
            System.out.println("\tDriver-Name: " + dm.getDriverName());
            System.out.println("\tDriver-Version: " + dm.getDriverVersion());
            System.out.println("\nInformationen zum DB-Server:\n");
            System.out.println("\tDatenbankname: " + dm.getDatabaseProductName());
            System.out.println("\tDatenbankversion: " + dm.getDatabaseProductVersion());
            System.out.println("\nDaten in diesem Ordner:\n");

            // Um den gesamten Katalog der DB anzuzeigen
            int n = 1;
            while (rs.next())
            {
                // ResultSet.getString() gibt den Pfad zur DB im Katalog zurück
                System.out.println("\t" + n + "-" + rs.getString(1));
                n += 1;
            }

            // Freigabe der Ressourcen
            rs.close();

            con.close();

            System.out.println("\nVerbindung mit: \"" + db + "\" geschlossen.\n\n");
        }
        catch (Exception huhn)
        {
            // System.out.println("\nFehler bei der Verbindung mit der DB: " + huhn.getMessage() + "\n");
            System.out.println("\nFehler beim Ausführen einer Aktion des Programms.\n\n");
        }
    }
}

Hinweise

  • Die Verbindung erfolgt über die JDBC-ODBC-Brücke (sun.jdbc.odbc.JdbcOdbcDriver), die ab Java 8 entfernt wurde. Für neuere Java-Versionen wird der UCanAccess-Treiber empfohlen.
  • Der Pfad zur Datenbank muss mit doppelten Backslashes angegeben werden (D:\\Ordner\\...).
  • Die Tabelle und das Feld im SQL-Statement (Tabelle1, Name) müssen an die eigene Datenbank angepasst werden.

Herunterladen

PDF Word HTML