PreparedStatement updatePerson = connection.prepareStatement("update person " +
"set name=?, surname=?, email=? where email=?");
JDBC, SQLException
Код:
Код:
public boolean updatePerson(Person person) {
try {
updatePerson.setString(1, person.getName());
updatePerson.setString(2, person.getSurname());
updatePerson.setString(3, person.getEmail());
updatePerson.setString(4, person.getEmail());
int result = updatePerson.executeUpdate();
if (result == 0) {
connection.rollback();
return false;
}
connection.commit();
return true;
} catch (SQLException sqle) {
sqle.getMessage();
sqle.printStackTrace();
return false;
}
}
try {
updatePerson.setString(1, person.getName());
updatePerson.setString(2, person.getSurname());
updatePerson.setString(3, person.getEmail());
updatePerson.setString(4, person.getEmail());
int result = updatePerson.executeUpdate();
if (result == 0) {
connection.rollback();
return false;
}
connection.commit();
return true;
} catch (SQLException sqle) {
sqle.getMessage();
sqle.printStackTrace();
return false;
}
}
у меня в запросе 4 вопроса, соответственно мне нужно использовать 4 раза ф-ию setString. но мне не нравится, что два раза дублируется одна и та же строчка, можно как-то по-другому сделать update всего объекта конкретного person? если дублирующую строку убрать, то возникает SQLException: no value specified for parameter 4.
Только не говорите, что хотите что-то этим соптимизировать.
у меня первичный ключ - email. как раз получается не логично, т.к. таким образом не смогу изменить email :(
Цитата: госик
у меня первичный ключ - email. как раз получается не логично, т.к. таким образом не смогу изменить email :(
Почему не сможете-то?
Если это можно сделать с точки зрения SQL - это можно сделать через JDBC.
Цитата: госик
у меня первичный ключ - email. как раз получается не логично, т.к. таким образом не смогу изменить email :(
Простите, а если email у Вас первичный ключ, зачем Вы его менять пытаетесь вообще?
Почему из запроса не убрать email=? и тогда не задавать этот параметр?
http://java.sun.com/docs/books/tutorial/jdbc/index.html
http://www.exampledepot.com/egs/java.sql/pkg.html
Good luck.
Вообще госик, очень большого смысла в заострении на подобном вопросе нет. На то и существует термин инкапсулиция. Метод можно инкапсулировать в классе как private или protected и вызывать его иным public методом и таким образом скрыть подробности от пользователей, если вам это так не нравиться.