Въведение в твърденията
Всички SQL заявки могат условно да бъдат разделени на две групи:
- Извличане на данни – Те включват командата SELECT .
- Модифициране на данни – Те включват оператори INSERT , UPDATE и DELETE .
За първата група се използва вече познатият ни метод на интерфейса Statement - executeQuery() . По принцип този метод е напълно достатъчен, за да започнете. Той обхваща много голям процент от заявките, които ще трябва да използвате в реална работа.
Ще разгледаме повече опции по-късно, но засега ви съветвам да запомните - ако просто искате да получите данни от table, тогава методът executeQuery () в по-голямата част от случаите ще бъде правилният избор.
За втората група заявки трябва да използвате друг метод на интерфейса Statement - executeUpdate() . За разлика от метода executeQuery() , който връща ResultSet, този метод връща цяло число, което ви казва колко реда в tableта са бor променени, когато вашата заявка е била изпълнена .
Например, можете да изтриете всички редове с командата DELETE FROM за служител (така че бъдете много внимателни). В този случай методът executeUpdate() ще върне броя на изтритите редове. В някои ситуации познаването на броя на променените редове може да бъде полезно за изграждане на алгоритми за работа с данни.
По принцип можем да завършим този въпрос - вече видяхме основното. За извличане на данни - executeQuery() . За да промените данните - executeUpdate() .
Вземете броя на потребителите в потребителската table , като използвате метода executeQuery() :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
изпълниUpdate()
Методът executeUpdate() се използва, когато вашата заявка промени нещо в table. Може да е всичко:
- Изявление UPDATE
- оператор INSERT
- Операция DELETE
- Декларация за ПРОЦЕДУРА ЗА ОБАЖДАНЕ
Този метод връща броя променени (or изтрити) редове.
Нека напишем заявка, която ще увеличи заплатата на всички наши служители с 1000 рубли.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
След като стартирах този code, той върна числото 6 на моята table.Моята table имаше 6 реда. Така че всички линии са променени.
изпълни()
Понякога в живота ви може да възникнат ситуации, когато не знаете точно Howва заявка трябва да изпълните - избор or промяна на данни. В този случай създателите на JDBC добавиха още един общ метод към него - execute() .
Този метод може да се използва instead of методите executeQuery() и executeUpdate() . Спомняте ли си How се различаваха тези методи? вярно Тип резултат. Затова създателите на JDBC излязоха с такова решение.
Методът execute() връща булево meaning. Ако тази стойност е true , тогава е била в ход заявка за извличане на данни и трябва да извикате метода getResultSet() , за да получите данните. Пример:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Ако тази стойност е false , тогава е била в ход заявка за промяна на данни и трябва да извикате метода getUpdateCount() , за да получите броя на променените редове. Пример:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Нека напишем метод, който показва резултата от заявка:
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);
}
}
Ето How методът execute() обикновено се използва на практика.