Bevezetés a nyilatkozatokba
Minden SQL-lekérdezés feltételesen két csoportra osztható:
- Adatok lekérése – Ide tartozik a SELECT utasítás .
- Adatok módosítása – Ide tartoznak az INSERT , UPDATE és DELETE utasítások .
Az első csoporthoz a már ismert Statement interface metódust használjuk - executeQuery() . Elvileg ez a módszer elég az induláshoz. A lekérdezések nagyon nagy százalékát fedi le, amelyeket egy valós munkában kell használnia.
Később még kitérünk a további lehetőségekre, de egyelőre azt tanácsolom, ne feledje – ha csak egy táblából szeretne adatokat lekérni, akkor az esetek túlnyomó többségében az executeQuery () metódus lesz a megfelelő választás.
A kérések második csoportjához a Statement felület egy másik metódusát kell használnia - executeUpdate() . Ellentétben az executeQuery() metódussal , amely egy ResultSet-et ad vissza, ez a metódus egy egész számot ad vissza, amely megmondja, hogy a tábla hány sora módosult a lekérdezés végrehajtásakor .
Például törölheti az összes sort a DELETE FROM alkalmazott utasítással (ezért legyen nagyon óvatos). Ebben az esetben az executeUpdate() metódus a törölt sorok számát adja vissza. Bizonyos helyzetekben a megváltozott sorok számának ismerete hasznos lehet az adatokkal való munka algoritmusainak felépítéséhez.
Elvileg be is fejezhetjük ezt a kérdést – a lényeget már láttuk. Adatlekéréshez - executeQuery() . Az adatok módosításához - executeUpdate() .
A felhasználói táblában lévő felhasználók számának lekérése az executeQuery() metódussal :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
executeUpdate()
Az executeUpdate() metódus akkor használatos, amikor a lekérdezés megváltoztat valamit a táblában. Bármi lehet:
- UPDATE nyilatkozat
- INSERT nyilatkozat
- TÖRLÉS utasítás
- HÍVÁSI ELJÁRÁS nyilatkozat
Ez a módszer a módosított (vagy törölt) sorok számát adja vissza.
Írjunk egy kérelmet, amely 1000 rubelrel növeli az összes alkalmazottunk fizetését.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Miután lefuttattam ezt a kódot, a 6-os számot adta vissza az asztalomon. A táblázatom 6 soros volt. Tehát minden sor megváltozott.
végrehajt()
Néha olyan helyzetek adódhatnak az életedben, amikor nem tudod, hogy pontosan milyen kérést kell végrehajtanod – kijelölést vagy adatváltozást. Ebben az esetben a JDBC készítői egy másik általános metódust adtak hozzá - execute() .
Ez a metódus használható az executeQuery() és az executeUpdate() metódusok helyett. Emlékszel, miben különböztek ezek a módszerek? Jobb. Az eredmény típusa. Ezért a JDBC készítői egy ilyen megoldással álltak elő.
Az execute() metódus logikai értéket ad vissza. Ha ez az érték igaz , akkor egy adatlekérési kérés volt folyamatban, és az adatok lekéréséhez meg kell hívnia a getResultSet() metódust. Példa:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Ha ez az érték false , akkor adatmódosítási kérés volt folyamatban, és a sorok számának módosításához meg kell hívnia a getUpdateCount() metódust. Példa:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Írjunk egy metódust, amely megjeleníti a lekérdezés eredményét:
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);
}
}
A gyakorlatban általában így használják az execute() metódust.
GO TO FULL VERSION