SQL in Java

In Java kann man Datenbanken durch den Databaseconnector ansprechen. Mit diesem kann eine Verbindung zu einer Datenbank aufgebaut werden und auch SQL-Statements ausgeführt werden.

Die Datenbank starten

Die Datenbank kann mit dem Programm XAMPP gestartet werden. Dabei wird auch die grafische Oberfläche phpmyadmin gestartet, die eine erleichterte Bedienung der Datenbank ermöglicht.

Um die Datenbank zu erreichen kann man die Addresse 127.0.0.1 bzw. localhost benutzen. Standartmäßig ist dabei der Benutzer root ohne Passwort schon eingerichtet.

Funktionen

Verbindung aufbauen

Bei dem Erzeugen eines Databaseconnector-Objektes werden alle nötigen Informationen für die Verbindungen dem Konstruktor mitgegeben. Dabei werden folgende Daten gebraucht:

  1. Url
  2. Port
  3. Datenbank
  4. Benutzername
  5. Passwort
DatabaseConnector db = new DatabaseConnector("127.0.0.1", 3306, "abimotto", "root", "");

SQL statement ausführen

Das SQL-Statement wird als String-Parameter der Methode executeStatement() mitgegeben. Diese führt dann das SQL-Statement auf die Datenbank aus.

Dabei ist jedoch zu bedenken, dass bei Variablen, die in das SQL-Statement eingebunden werden (wie zum Beispiel eine ID), diese auch in Anführungszeichen stehen müssen. Daher verwendet man dann für solche Fälle einfache Anführungszeichen.

db.executeStatement("SELECT UID FROM wahl WHERE UID = '" + uid + "'");

Eine weitere Möglichkeit das obige Statement zu schreiben, sieht wie folgt aus:

db.executeStatement("SELECT UID FROM wahl WHERE UID = '%s'", uid);

Fehler abfangen

Sollte ein Statement zu einem Fehler führen, kann dieser mit der Methode getErrorMessage() abgefragt werden. Dabei bezieht sich der Rückgabewert immer auf das zuletzt ausgeführte Statement.

String err = db.getErrorMessage();
if (err != null) {
    errorAusgeben(err);
    return;
}

Der Error wird als String gespeichert. Sollte das letzte Statement fehlerfrei ausgeführt worden sein, so ist die Variable null.

Ergebnis abfragen

SQL-Abfragen wie beispielsweise SELECT haben eine Rückgabe. Um diese Abgaben auch in der Anwendung zu verwenden, gibt es zusätzlich zu dem Objekt Databaseconnector noch die Klasse QueryResult. Dort werden alle Datensätze als String gespeichert, und zudem noch weitere Informationen, wie die Reihen- und Spaltenanzahl.

Mit getCurrentQueryResult() kann das QueryResult der letzten Abfrage gespeichert werden.

Die folgende Methode konvertiert das QueryResult einer Abfrage zu einer gut formatierten, lesbaren Ausgabe.

public String ergebnisRelationToString(QueryResult pRes) {
    String ausgabe = "";

    // Daten aus pRes abfragen
    String[][] data = pRes.getData();
    String[] coloumnNames = pRes.getColumnNames();

    // Spaltenbezeichnungen hinzufügen
    for (String columnName : coloumnNames) {
        ausgabe += columnName + "\t";
    }

    ausgabe += "\n";

    // Datensätze einfügen
    for (int i = 0; i < pRes.getRowCount(); i++) {
        for (int j = 0; j < pRes.getColumnCount(); j++) {
            ausgabe += data[i][j] + "\t";
        }
        ausgabe += "\n";
    }


    return ausgabe;
}

Die Ausgabe könnte dann folgendermaßen aussehen:

BeispielGUISQL