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() .
Få 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.
GO TO FULL VERSION