Startup für PostgreSQL + JDBC + Eclipse

Eine kleine Anleitung, wie man mittels JDBC eine Verbindung zu einer lokal installierten PostgreSQL-Datenbank in Java programmiert.

Die Java Klasse ‘Database’ baut zu einer lokal installierten PostgreSQL-Datenbank eine Verbindung über einen JDBC-Treiber auf. Zum Nachweis, dass die Verbindung auch funktioniert, wird anschließend die Tabelle ‘pg_catalog.pg_timezone_names’ von der Datenbank gelesen und die Werte nach ‘System.out’ geschrieben. Danach wird die Verbindung wieder geschlossen.

Übersichtshalber wurden die einzelnen auszuführenden Schritte jeweils in einer Methode implementiert. Die im Code Rot markierten Werten müssen den Werten der eigenen Datenbank angepasst werden! Da die Tabelle ‘pg_catalog.pg_timezone_names’ eine System-Tabelle ist, muss als ‘user’ der Administrator der Datenbank angegeben werden. Zum Betrieb muss der entsprechende JDBC-Treiber noch eingebunden werden.

Weiter unten wird beschrieben wie man den Code mittels der IDE ‘eclipse’ testet.

import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
 
 
 
public class Database
{
  String     driver     = "org.postgresql.Driver";
 
  // --------------------------------------------------------------------------
 
  String     host       = "[B][color=red]localhost[/color][/B]";            // !!! anpassen !!!
 
  String     port       = "[B][color=red]5432[/color][/B]";                 // !!! anpassen !!!
 
  String     database   = "[B][color=red]postgres[/color][/B]";             // !!! anpassen !!!
 
  String     user       = "[B][color=red]???[/color][/B]";                  // !!! anpassen !!!
 
  String     password   = "[B][color=red]???[/color][/B]";                  // !!! anpassen !!!
 
  // --------------------------------------------------------------------------
 
  Connection connection = null;
 
 
 
 
 
  /**
   * Constructor
   */
  public Database ()
  {
    loadJdbcDriver ();
    openConnection ();
    showTimezones ();
    closeConnection ();
  }
 
 
 
 
 
  /**
   * close the connection
   */
  private void closeConnection ()
  {
    try
    {
      connection.close ();
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
 
    System.out.println ("\nconnection closed");
  }
 
 
 
 
 
  /**
   * @return Url-string for postgreSQL-database connection
   */
  private String getUrl ()
  {
    // PostgreSQL takes one of the following url-forms:
    // ================================================
    // jdbc :p ostgresql:database
    // jdbc :p ostgresql://host/database
    // jdbc :p ostgresql://host :p ort/database
 
    return ("jdbc :p ostgresql:" + (host != null ? ("//" + host) + (port != null ? ":" + port : "") + "/" : "") + database);
  }
 
 
 
 
 
  /**
   * loading the JDBC driver
   */
  private void loadJdbcDriver ()
  {
    try
    {
      Class.forName (driver);
    }
    catch (ClassNotFoundException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
 
    System.out.println ("driver loaded");
  }
 
 
 
 
 
  /**
   * opening the connection
   */
  private void openConnection ()
  {
    try
    {
      connection = DriverManager.getConnection (getUrl (),
                                                user,
                                                password);
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
 
    System.out.println ("connection opened");
  }
 
 
 
 
 
  /**
   * show the timezones used in the database
   */
  private void showTimezones ()
  {
    try
    {
      Statement statement = connection.createStatement ();
 
      ResultSet resultSet = statement.executeQuery ("select * from pg_catalog.pg_timezone_names");
 
      ResultSetMetaData resultSetMetaData = resultSet.getMetaData ();
 
      System.out.println ("\n\nshow data from table: 'pg_catalog.pg_timezone_names'\n");
 
      String format = "%35s   %-6s   %10s   %s\n";
 
      System.out.printf (format + "\n",
                         resultSetMetaData.getColumnLabel (1),
                         resultSetMetaData.getColumnLabel (2),
                         resultSetMetaData.getColumnLabel (3),
                         resultSetMetaData.getColumnLabel (4));
 
      while (resultSet.next ())
      {
        System.out.printf (format,
                           resultSet.getString (1),
                           resultSet.getString (2),
                           resultSet.getString (3),
                           resultSet.getString (4));
      }
 
      resultSet.close ();
      statement.close ();
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
  }
 
 
 
 
 
  public static void main (String[] args)
  {
    EventQueue.invokeLater (new Runnable ()
    {
      public void run ()
      {
        Database database = new Database ();
 
        System.exit (0);
      }
    });
  }
}

Testen des Codes mittels der IDE 'eclipse’

Verwendete Werkzeuge

  • WindowsXP Professional
  • jdk1.6.0_03 / jre1.6.0_03
  • eclipse-SDK-3.3-win32
  • PostgreSQL 8.2.5-1 als lokale Datenbank installiert: Locale: German_German, Encoding: Win1252
  • JDBC-Treiber: ‘postgresql-8.2-506.jdbc3.jar’ und ‘postgresql-8.2-506.jdbc4.jar’

Zum Testen mittels ‘eclipse’ im Package Explorer ein neues Projekt anlegen, z. B. ‘DatabasePostgreSQL’ (1). Als nächstes muss eine Klasse mit dem Namen ‘Database’ (2) erstellt werden. Anschließend den obigen Code in den Editor von ‘eclipse’ kopieren.
PE_1

Als nächster Schritt muss ein JDBC-Treiber von PostgreSQL als Library installiert werden. Das erfolgt in 2 Schritten.

1. Allgemein Registrierung des JDBC-Treibers

Hierzu muss der Preference-Dialog aufgerufen werden (Windows ==> Preferences…). Anschließend sind entsprechend der Reihenfolge der Zahlen in den folgenden Bildern die Selektionen bzw. die Eingaben auszuführen.
RA_1
RA_2
RA_3
RA_4
RA_5

2. Registrierung des JDBC-Treibers im Projekt

Als erstes muss im Package Explorer das Projekt ‘DatabasePostgreSQL’ selektieren. Danach den Properties-Dialog des Projektes aufgerufen (Projekt ==> Properties). Anschließend sind entsprechend der Reihenfolge der Zahlen in den folgenden Bildern die Selektionen bzw. die Eingaben auszuführen.
RP_1
RP_2
RP_3
RP_4

Bleibt nur noch das Programm durch Betätigen der Taste F11 zu starten. Viel Erfolg!

Hier gibt es die Dokumentation zu den JDBC-Treibern von PostgreSQL. Sollte man unbedingt lesen!