Introduktion til erklæringer
Alle SQL-forespørgsler kan betinget opdeles i to grupper:
- Henter data − Disse inkluderer SELECT- sætningen .
- Ændring af data − Disse omfatter INSERT- , UPDATE- og DELETE -sætninger .
For den første gruppe bruges Statement- grænseflademetoden, som vi allerede kender - executeQuery() . I princippet er denne metode ganske nok til at komme i gang. Det dækker en meget stor procentdel af forespørgsler, som du skal bruge i et rigtigt job.
Vi kommer ind på flere muligheder senere, men indtil videre råder jeg dig til at huske - hvis du blot ønsker at hente data fra en tabel, så vil executeQuery () metoden i langt de fleste tilfælde være det rigtige valg.
For den anden gruppe af anmodninger skal du bruge en anden metode til Statement-grænsefladen - executeUpdate() . I modsætning til metoden executeQuery() , som returnerer et ResultSet, returnerer denne metode et heltal, der fortæller dig, hvor mange rækker i tabellen, der blev ændret, da din forespørgsel blev udført .
For eksempel kan du slette alle rækker med SLET FRA medarbejdererklæringen (så vær meget forsigtig). I dette tilfælde vil executeUpdate() -metoden returnere antallet af slettede rækker. I nogle situationer kan det være nyttigt at kende antallet af ændrede rækker til at bygge algoritmer til at arbejde med data.
I princippet kan vi afslutte dette spørgsmål - vi har allerede set det vigtigste. Til datahentning - executeQuery() . For at ændre data - executeUpdate() .
Få antallet af brugere i brugertabellen ved hjælp af executeQuery() -metoden :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
executeUpdate()
Metoden executeUpdate() bruges, når din forespørgsel ændrer noget i en tabel. Det kan være hvad som helst:
- OPDATERING erklæring
- INSERT erklæring
- SLET erklæring
- CALL PROCEDURE erklæring
Denne metode returnerer antallet af ændrede (eller slettede) rækker.
Lad os skrive en anmodning, der vil øge lønnen for alle vores ansatte med 1000 rubler.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Efter at jeg kørte denne kode, returnerede den tallet 6 på mit bord. Mit bord havde 6 rækker. Så alle linjer er blevet ændret.
udføre()
Nogle gange kan der opstå situationer i dit liv, hvor du ikke ved præcis, hvilken anmodning du skal udføre - et valg eller en dataændring. I dette tilfælde tilføjede skaberne af JDBC en anden generisk metode til it - execute() .
Denne metode kan bruges i stedet for metoderne executeQuery() og executeUpdate() . Kan du huske, hvordan disse metoder adskilte sig? Højre. Resultattype. Derfor kom skaberne af JDBC med en sådan løsning.
execute() -metoden returnerer boolean. Hvis denne værdi er sand , var en anmodning om datahentning i gang, og du skal kalde metoden getResultSet() for at 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 værdi er falsk , var en dataændringsanmodning i gang, og du skal kalde metoden getUpdateCount() for at få ændret antallet af rækker. Eksempel:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Lad os skrive en metode, der viser resultatet af en forespørgsel:
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ådan bruges execute()- metoden normalt i praksis.
GO TO FULL VERSION