Inleiding tot verklaringen

Alle SQL-query's kunnen voorwaardelijk in twee groepen worden verdeeld:

  • Gegevens ophalen - Dit omvat de SELECT- instructie .
  • Gegevens wijzigen - Dit zijn onder andere INSERT- , UPDATE- en DELETE- instructies .

Voor de eerste groep wordt de ons al bekende Statement- interfacemethode gebruikt - executeQuery() . In principe is deze methode voldoende om aan de slag te gaan. Het dekt een zeer groot percentage van de vragen die u in een echte baan moet gebruiken.

We zullen later op meer opties ingaan, maar voor nu raad ik u aan om te onthouden: als u alleen gegevens uit een tabel wilt halen, is de methode executeQuery () in de overgrote meerderheid van de gevallen de juiste keuze.

Voor de tweede groep verzoeken moet u een andere methode van de Statement-interface gebruiken: executeUpdate() . In tegenstelling tot de methode executeQuery() , die een ResultSet retourneert, retourneert deze methode een geheel getal dat u vertelt hoeveel rijen in de tabel zijn gewijzigd toen uw query werd uitgevoerd .

U kunt bijvoorbeeld alle rijen verwijderen met de DELETE FROM werknemer-instructie (wees dus zeer voorzichtig). In dit geval retourneert de methode executeUpdate() het aantal verwijderde rijen. In sommige situaties kan het handig zijn om het aantal gewijzigde rijen te kennen voor het bouwen van algoritmen voor het werken met gegevens.

In principe kunnen we deze vraag afmaken - we hebben het belangrijkste al gezien. Voor het ophalen van gegevens - executeQuery() . Om de gegevens te wijzigen - executeUpdate() .

Haal het aantal gebruikers in de gebruikerstabel op met behulp van de methode executeQuery() :


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

uitvoerenUpdate()

De methode executeUpdate() wordt gebruikt wanneer uw query iets in een tabel verandert. Het kan van alles zijn:

  • UPDATE -verklaring
  • INSERT- verklaring
  • DELETE verklaring
  • CALL PROCEDURE verklaring

Deze methode retourneert het aantal gewijzigde (of verwijderde) rijen.

Laten we een verzoek schrijven dat het salaris van al onze werknemers met 1000 roebel zal verhogen.


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

Nadat ik deze code had uitgevoerd, retourneerde het nummer 6 op mijn tafel.Mijn tafel had 6 rijen. Dus alle lijnen zijn veranderd.

uitvoeren()

Soms kunnen er situaties in uw leven ontstaan ​​waarin u niet precies weet welk verzoek u moet uitvoeren - een selectie of een gegevenswijziging. In dit geval hebben de makers van JDBC er nog een generieke methode aan toegevoegd - execute() .

Deze methode kan worden gebruikt in plaats van de methoden executeQuery() en executeUpdate() . Weet je nog hoe deze methoden verschilden? Rechts. Resultaattype. Daarom bedachten de makers van JDBC zo'n oplossing.

De methode execute() retourneert boolean. Als deze waarde true is , was er een verzoek om gegevens op te halen en moet u de methode getResultSet() aanroepen om de gegevens op te halen. Voorbeeld:


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

Als deze waarde false is , was er een verzoek om gegevens te wijzigen en moet u de methode getUpdateCount() aanroepen om het aantal rijen te wijzigen. Voorbeeld:


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

Laten we een methode schrijven die het resultaat van een query weergeeft:


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

Dit is hoe de methode execute() in de praktijk meestal wordt gebruikt.