Introduzione alle affermazioni

Tutte le query SQL possono essere suddivise condizionatamente in due gruppi:

  • Recupero di dati - Questi includono l' istruzione SELECT .
  • Modifica dei dati - Questi includono le istruzioni INSERT , UPDATE e DELETE .

Per il primo gruppo, viene utilizzato il metodo dell'interfaccia Statement che ci è già familiare : executeQuery() . In linea di principio, questo metodo è abbastanza per iniziare. Copre una percentuale molto ampia di query che dovrai utilizzare in un lavoro reale.

Entreremo in più opzioni in seguito, ma per ora ti consiglio di ricordare: se vuoi solo ottenere dati da una tabella, il metodo executeQuery () nella stragrande maggioranza dei casi sarà la scelta giusta.

Per il secondo gruppo di richieste, è necessario utilizzare un altro metodo dell'interfaccia Statement: executeUpdate() . A differenza del metodo executeQuery() , che restituisce un ResultSet, questo metodo restituisce un numero intero che indica quante righe nella tabella sono state modificate quando è stata eseguita la query .

Ad esempio, puoi eliminare tutte le righe con l'istruzione DELETE FROM employee (quindi fai molta attenzione). In questo caso, il metodo executeUpdate() restituirà il numero di righe cancellate. In alcune situazioni, conoscere il numero di righe modificate può essere utile per creare algoritmi per lavorare con i dati.

In linea di principio, possiamo concludere questa domanda: abbiamo già visto la cosa principale. Per il recupero dei dati - executeQuery() . Per modificare i dati - executeUpdate() .

Ottieni il numero di utenti nella tabella utenti usando il metodo executeQuery() :


	ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
	results.next();
    int count = results.getInt(1);

eseguiAggiorna()

Il metodo executeUpdate() viene utilizzato quando la query modifica qualcosa in una tabella. Potrebbe essere qualsiasi cosa:

  • Istruzione UPDATE
  • INSERIRE l'istruzione
  • Istruzione DELETE
  • dichiarazione PROCEDURA DI CHIAMATA

Questo metodo restituisce il numero di righe modificate (o eliminate).

Scriviamo una richiesta che aumenterà lo stipendio di tutti i nostri dipendenti di 1000 rubli.


   int rowsCount = statement.executeUpdate("UPDATE  employee SET salary = salary+1000");

Dopo aver eseguito questo codice, sulla mia tabella ha restituito il numero 6. La mia tabella aveva 6 righe. Quindi tutte le linee sono state modificate.

eseguire()

A volte nella tua vita possono sorgere situazioni in cui non sai esattamente quale richiesta devi eseguire: una selezione o una modifica dei dati. In questo caso, i creatori di JDBC hanno aggiunto un altro metodo generico: execute() .

Questo metodo può essere utilizzato al posto dei metodi executeQuery() ed executeUpdate() . Ricordi come differivano questi metodi? Giusto. Tipo di risultato. Pertanto, i creatori di JDBC hanno escogitato una tale soluzione.

Il metodo execute() restituisce booleano. Se questo valore è true , era in corso una richiesta di recupero dati ed è necessario chiamare il metodo getResultSet() per ottenere i dati. Esempio:


    boolean hasResults = statement.execute("SELECT Count(*) FROM user");
    if ( hasResults ) {
        	ResultSet results =  statement.getResultSet();
        	results.next();
        	int count = results.getInt(1);
 	}

Se questo valore è false , era in corso una richiesta di modifica dei dati ed è necessario chiamare il metodo getUpdateCount() per ottenere la modifica del numero di righe. Esempio:


    boolean hasResults = statement.execute("UPDATE  employee SET salary = salary+1000");
    if ( !hasResults ) {
      	int count = statement.getUpdateCount();
 	}

Scriviamo un metodo che visualizzi il risultato di una query:


	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);
  	}
}

Questo è il modo in cui il metodo execute() viene solitamente utilizzato nella pratica.