Introduktion till uttalanden
Alla SQL-frågor kan villkorligt delas in i två grupper:
- Hämta data − Dessa inkluderar SELECT- satsen .
- Ändra data − Dessa inkluderar INSERT- , UPDATE- och DELETE -satser .
För den första gruppen används Statement- gränssnittsmetoden som redan är bekant för oss - executeQuery() . I princip räcker denna metod för att komma igång. Den täcker en mycket stor andel av frågorna som du kommer att behöva använda i ett riktigt jobb.
Vi kommer in på fler alternativ senare, men för nu råder jag dig att komma ihåg - om du bara vill hämta data från en tabell, så kommer metoden executeQuery () i de allra flesta fall att vara det rätta valet.
För den andra gruppen av förfrågningar måste du använda en annan metod för Statement-gränssnittet - executeUpdate() . Till skillnad från metoden executeQuery() , som returnerar en ResultSet, returnerar denna metod ett heltal som talar om hur många rader i tabellen som ändrades när din fråga kördes .
Till exempel kan du ta bort alla rader med DELETE FROM- anställds uttalande (så var mycket försiktig). I det här fallet kommer metoden executeUpdate() att returnera antalet raderade rader. I vissa situationer kan det vara användbart att känna till antalet ändrade rader för att bygga algoritmer för att arbeta med data.
I princip kan vi avsluta den här frågan - vi har redan sett det viktigaste. För datahämtning - executeQuery() . För att ändra data - executeUpdate() .
Hämta antalet användare i användartabellen med metoden executeQuery() :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
executeUpdate()
Metoden executeUpdate() används när din fråga ändrar något i en tabell. Det kan vara vad som helst:
- UPPDATERA uttalande
- INSERT uttalande
- DELETE- sats
- CALL PROCEDURE uttalande
Denna metod returnerar antalet ändrade (eller raderade) rader.
Låt oss skriva en begäran som kommer att öka lönen för alla våra anställda med 1000 rubel.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Efter att jag kört den här koden returnerade den siffran 6 på mitt bord. Mitt bord hade 6 rader. Så alla linjer har ändrats.
Kör()
Ibland kan situationer uppstå i ditt liv när du inte vet exakt vilken begäran du måste utföra - ett urval eller en dataändring. I det här fallet lade skaparna av JDBC till en annan generisk metod till it - execute() .
Denna metod kan användas i stället för metoderna executeQuery() och executeUpdate() . Kommer du ihåg hur dessa metoder skiljde sig? Höger. Resultattyp. Därför kom skaparna av JDBC med en sådan lösning.
Metoden execute() returnerar boolean. Om detta värde är sant , pågick en begäran om datahämtning, och du måste anropa metoden getResultSet() för att hämta data. Exempel:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Om detta värde är falskt pågick en begäran om dataändring, och du måste anropa metoden getUpdateCount() för att få antalet rader ändrade. Exempel:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Låt oss skriva en metod som visar resultatet av en fråga:
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);
}
}
Så här brukar metoden execute() användas i praktiken.
GO TO FULL VERSION