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:
- Url
- Port
- Datenbank
- Benutzername
- 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: