Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JDBC, SQLException

2.1K
16 августа 2008 года
госик
98 / / 20.11.2006
пытаюсь сделать update записи в таблице.
 
Код:
PreparedStatement updatePerson = connection.prepareStatement("update person " +
                    "set name=?, surname=?, email=? where email=?");

Код:
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;
        }
    }

у меня в запросе 4 вопроса, соответственно мне нужно использовать 4 раза ф-ию setString. но мне не нравится, что два раза дублируется одна и та же строчка, можно как-то по-другому сделать update всего объекта конкретного person? если дублирующую строку убрать, то возникает SQLException: no value specified for parameter 4.
63
16 августа 2008 года
Zorkus
2.6K / / 04.11.2006
Чем не нравится? Просто, логично и читабельно.
Только не говорите, что хотите что-то этим соптимизировать.
2.1K
16 августа 2008 года
госик
98 / / 20.11.2006
у меня первичный ключ - email. как раз получается не логично, т.к. таким образом не смогу изменить email :(
63
17 августа 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: госик
у меня первичный ключ - email. как раз получается не логично, т.к. таким образом не смогу изменить email :(


Почему не сможете-то?
Если это можно сделать с точки зрения SQL - это можно сделать через JDBC.

36K
18 августа 2008 года
Alno
34 / / 23.06.2008
Цитата: госик
у меня первичный ключ - email. как раз получается не логично, т.к. таким образом не смогу изменить email :(



Простите, а если email у Вас первичный ключ, зачем Вы его менять пытаетесь вообще?

Почему из запроса не убрать email=? и тогда не задавать этот параметр?

502
18 августа 2008 года
Jail
550 / / 30.01.2007
Да, наверное только не прозвучали фразы типа: bad idea, bad design. you need to learn how to design relational databases better. и ко всему к этому добавить ссылочки
http://java.sun.com/docs/books/tutorial/jdbc/index.html
http://www.exampledepot.com/egs/java.sql/pkg.html
Good luck.
Вообще госик, очень большого смысла в заострении на подобном вопросе нет. На то и существует термин инкапсулиция. Метод можно инкапсулировать в классе как private или protected и вызывать его иным public методом и таким образом скрыть подробности от пользователей, если вам это так не нравиться.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог