executeQuery()
für SQL Statements mit nur einem ResultSet wie
SELECT
executeUpdate()
für INSERT
, UPDATE
und
DELETE
sowie für SQL DDL (Data Definition Language) Anweisungen
wie CREATE TABLE
und DROP TABLE
, Rückgabewert ist
ein Integerwert, der die Anzahl der veränderten Zeilen angibt ("Update Count",
bei DDL-Anweisungen immer Null)
execute()
für Anweisungen, die mehrere ResultSets und/oder mehrere
Update Counts zurückgeben bzw. wo SQL-Anweisung zur Compile-Zeit unbekannt
Connection connection = DriverManager.getConnection( "jdbc:odbc:datasource", "login", "password"); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT Elefant FROM Afrika"); |
Quellcode eines Query-Programms: Query.java
zugehörige Properties: .properties
getXXX()
Methoden aufrufen
(getResultSet()
, getUpdateCount()
, getMoreResults()
)
keine Resultate mehr, wenn gilt:
((statement.getMoreResults() == false) && (statement.getUpdateCount() == -1))
bzw.
((statement.getResultSet() == null) && (statement.getUpdateCount() == -1))
statement.execute(queryStringWithUnknownResults); while (true) { int rowCount = statement.getUpdateCount(); if (rowCount > 0) { // ein Update Count System.out.println(rowCount + " Zeilen geaendert"); statement.getMoreResults(); continue; } if (rowCount == 0) { // DDL Kommando oder 0 Updates System.out.println( "Keine Zeilen geaendert oder DDL Kommando"); statement.getMoreResults(); continue; } // jetzt entweder ResultSet oder keine Resultate (mehr) ResultSet resultSet = statement.getResultSet(); if (resultSet != null) { ... // DatabaseMetaData fuer Info ueber Spalten while (resultSet.next()) { ... // Resultate verarbeiten statement.getMoreResults(); continue; } break; // keine weiteren Resultate } |
Quellcode eines Execute-Programms: Execute.java