Datenbankabfragen (Java)

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Um in Java mit Datenbanken zu arbeiten muss vorher die Verbindung zu der Datenbank hergestellt werden.

Mit diesem Connection-Objekt werden dann alle weiteren Operationen ausgeführt.

Abfragen

Um einfache Abfragen aus zuführen, muss man sich ein Statement aus der Verbindung erzeugen lassen, dies geschied mit:

Statement stmt = con.createStatement(); //con ist ein java.sql.Connection Objekt

Über dieses Statement lassen sich jetzt alle weiteren Abfragen ausführen, zu beachten ist jedoch das immer nur eine Abfrage gleichzeitig von dem Statement gleichzeitig bearbeitet werden kann. Sollen mehrere Abfragen gleichzeitig bearbeitet werden, muss man sich verschiedene Statements erzeugen.

Um eine Abfrage auszuführen, wird jetzt executeQuery aufgerufen, dieses gibt ein ResultSet zurück, in diesem sind alle Ergebnisse der Abfrage vorhanden.

ResultSet res = stmt.executeQuery("SELECT * FROM tabelle;");

Das ResultSet kann man sich wie eine Tabelle vorstellen, in dem alle Ergebnisse in Spalten und Zeilen eingetragen sind. Um durch das ResultSet zu laufen, muss man immer die Methode next() aufrufen, diese gibt true oder false zurück, je nach dem, ob es eine weitere Zeile gibt. Die Methode next() muss auch vor dem ersten Zugriff aufgerufen werden, so erfährt man auch ob es ein Ergebnis gibt. Um auf die einzelnen Spalten des Ergebnis zuzugreifen, benutzt man die Methode, die den für einen passenden Wert zurück gibt und als Argument kann man den Spaltennamen oder die Position beginnend mit 1 benutzen.

while(res.next())
{
  System.out.println(res.getString("spalte1"));
  System.out.println(res.getString(1));
}

Am Ende der Abfrage sollte man das Statement Objekt nicht schließen, da so auch die Verbindung geschlossen wird, dies kann Vor- und Nachteile haben.

Änderungen

Um Änderungen an den Daten vorzunehmen, muss wie bei den Abfragen ein Statement Objekt erzeugen. Anschließend kann über dieses Statement mit executeUpdate() die Anweisung ausgeführt werden. Als Rückgabewert wird dabei die Anzahl der betroffenen Zeilen zurückgegeben.

Statement stmt = con.createStatement();
int ret = stmt.executeUpdate("DELETE FROM tabelle;");

Mit executeUpdate sollten alle Arten von Abfragen ausgeführt werden, die keine Ergebnismenge zurückgeben.