Introduksjon til uttalelser

Alle SQL-spørringer kan betinget deles inn i to grupper:

  • Henter data − Disse inkluderer SELECT- setningen .
  • Endre data − Disse inkluderer INSERT- , UPDATE- og DELETE -setninger .

For den første gruppen brukes Statement- grensesnittmetoden som allerede er kjent for oss - executeQuery() . I prinsippet er denne metoden ganske nok til å komme i gang. Den dekker en veldig stor prosentandel av søk som du må bruke i en ekte jobb.

Vi kommer inn på flere alternativer senere, men foreløpig anbefaler jeg deg å huske - hvis du bare vil hente data fra en tabell, vil executeQuery () -metoden i de aller fleste tilfeller være det riktige valget.

For den andre gruppen med forespørsler må du bruke en annen metode for Statement-grensesnittet - executeUpdate() . I motsetning til executeQuery()- metoden , som returnerer et ResultSet, returnerer denne metoden et heltall som forteller deg hvor mange rader i tabellen som ble endret da spørringen ble utført .

For eksempel kan du slette alle rader med SLETT FRA ansatt-erklæringen (så vær veldig forsiktig). I dette tilfellet vil executeUpdate() -metoden returnere antall slettede rader. I noen situasjoner kan det være nyttig å vite antall endrede rader for å bygge algoritmer for arbeid med data.

I prinsippet kan vi fullføre dette spørsmålet - vi har allerede sett det viktigste. For datahenting - executeQuery() . For å endre dataene - executeUpdate() .

antall brukere i brukertabellen ved å bruke executeQuery() -metoden :


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

executeUpdate()

Metoden executeUpdate() brukes når spørringen endrer noe i en tabell. Det kan være hva som helst:

  • OPPDATERING erklæring
  • INSERT- setning
  • SLETT uttalelse
  • CALL PROSEDYRE- erklæring

Denne metoden returnerer antall endrede (eller slettede) rader.

La oss skrive en forespørsel som vil øke lønnen til alle våre ansatte med 1000 rubler.


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

Etter at jeg kjørte denne koden, returnerte den tallet 6 på bordet mitt. Bordet mitt hadde 6 rader. Så alle linjene er endret.

henrette()

Noen ganger kan det oppstå situasjoner i livet ditt når du ikke vet nøyaktig hvilken forespørsel du må utføre - et utvalg eller en dataendring. I dette tilfellet la skaperne av JDBC til en annen generisk metode til it - execute() .

Denne metoden kan brukes i stedet for metodene executeQuery() og executeUpdate() . Husker du hvordan disse metodene var forskjellige? Ikke sant. Resultattype. Derfor kom skaperne av JDBC opp med en slik løsning.

execute() -metoden returnerer boolsk. Hvis denne verdien er sann , pågikk en forespørsel om datahenting, og du må kalle opp getResultSet()- metoden for å hente dataene. Eksempel:


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

Hvis denne verdien er usann , var en dataendringsforespørsel i gang, og du må ringe getUpdateCount()- metoden for å få endret antall rader. Eksempel:


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

La oss skrive en metode som viser resultatet av en spørring:


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

Dette er hvordan execute() -metoden vanligvis brukes i praksis.