Einführung in Aussagen
Alle SQL-Abfragen lassen sich bedingt in zwei Gruppen einteilen:
- Daten abrufen – Dazu gehört die SELECT- Anweisung .
- Ändern von Daten – Dazu gehören INSERT- , UPDATE- und DELETE -Anweisungen .
Für die erste Gruppe wird die uns bereits bekannte Statement- Schnittstellenmethode verwendet -executeQuery () . Im Prinzip reicht diese Methode völlig aus, um loszulegen. Es deckt einen sehr großen Prozentsatz der Abfragen ab, die Sie in einem realen Job verwenden müssen.
Wir werden später auf weitere Optionen eingehen, aber vorerst rate ich Ihnen, sich daran zu erinnern: Wenn Sie nur Daten aus einer Tabelle abrufen möchten, ist die MethodeexecuteQuery( ) in den allermeisten Fällen die richtige Wahl.
Für die zweite Gruppe von Anforderungen müssen Sie eine andere Methode der Statement-Schnittstelle verwenden –executeUpdate() . Im Gegensatz zur Methode „executeQuery() “, die ein ResultSet zurückgibt, gibt diese Methode eine Ganzzahl zurück, die Ihnen sagt, wie viele Zeilen in der Tabelle geändert wurden, als Ihre Abfrage ausgeführt wurde .
Sie können beispielsweise alle Zeilen mit der DELETE FROM- Mitarbeiteranweisung löschen (seien Sie also sehr vorsichtig). In diesem Fall gibt die MethodeexecuteUpdate() die Anzahl der gelöschten Zeilen zurück. In manchen Situationen kann es hilfreich sein, die Anzahl der geänderten Zeilen zu kennen, um Algorithmen für die Arbeit mit Daten zu erstellen.
Im Prinzip können wir diese Frage beenden – das Wesentliche haben wir bereits gesehen. Zum Datenabruf -executeQuery() . Um die Daten zu ändern, führen SieUpdate() aus .
Ermitteln Sie die Anzahl der Benutzer in der Benutzertabelle mit der MethodeexecuteQuery () :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
ausführenUpdate()
Die MethodeexecuteUpdate () wird verwendet, wenn Ihre Abfrage etwas in einer Tabelle ändert. Es könnte alles sein:
- UPDATE- Anweisung
- INSERT- Anweisung
- DELETE- Anweisung
- CALL PROCEDURE -Anweisung
Diese Methode gibt die Anzahl der geänderten (oder gelöschten) Zeilen zurück.
Schreiben wir einen Antrag, der das Gehalt aller unserer Mitarbeiter um 1000 Rubel erhöht.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Nachdem ich diesen Code ausgeführt hatte, gab er die Nummer 6 in meiner Tabelle zurück. Meine Tabelle hatte 6 Zeilen. Daher wurden alle Zeilen geändert.
ausführen()
Manchmal kann es in Ihrem Leben zu Situationen kommen, in denen Sie nicht genau wissen, welche Anfrage Sie ausführen müssen – eine Auswahl oder eine Datenänderung. In diesem Fall haben die Ersteller von JDBC eine weitere generische Methode hinzugefügt –execute () .
Diese Methode kann anstelle der MethodenexecuteQuery() undexecuteUpdate () verwendet werden . Erinnern Sie sich, wie unterschiedlich diese Methoden waren? Rechts. Ergebnistyp. Daher haben die Entwickler von JDBC eine solche Lösung entwickelt.
Die Methodeexecute () gibt einen booleschen Wert zurück. Wenn dieser Wert true ist , wurde eine Datenabrufanforderung ausgeführt und Sie müssen die Methode getResultSet() aufrufen , um die Daten abzurufen. Beispiel:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Wenn dieser Wert false ist , wurde eine Datenänderungsanforderung ausgeführt und Sie müssen die Methode getUpdateCount() aufrufen , um die Anzahl der geänderten Zeilen abzurufen. Beispiel:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Schreiben wir eine Methode, die das Ergebnis einer Abfrage anzeigt:
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Your request lines below: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Number of name strings: ” + count);
}
}
So wird die Methodeexecute() in der Praxis üblicherweise verwendet.
GO TO FULL VERSION