Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с Derby: SQLTransactionRollbackException 
:(
    Опции темы
Redhopter
Дата 12.3.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Привет всем. Сейчас делаю проект с базой данных Derby поставляемой в Java 6 и возникла такая проблема.
Необходимо проверить, есть ли запись в таблице, если нет - то надо вставить, если есть - то обновить. Стандартная ситуация.
Операция с добавлением записи проходит на ура, а при обновлении вылетает java.sql.SQLTransactionRollbackException: A lock could not be obtained within the time requested. 
Приведу исходный код
Код

//объект Connection получаем от пула соединений.
Connection connection = pool.getConnection();
        try {
//Создаем PreparedStatement  для поиска записи
            PreparedStatement statement = connection.prepareStatement(FIND_KOFF, ResultSet.TYPE_SCROLL_SENSITIVE,
                                     ResultSet.CONCUR_UPDATABLE);
            statement.setString(1, o.getId());
            statement.setString(2, "" + year);
            statement.setString(3, "" + (month + 1));
            statement.execute();
            ResultSet set = statement.getResultSet();
//Проверяем, содержит ли ResultSet что-либо или пуст
            if (set.next()) {
//Перешли на запись и обновляем ее.
                set.updateString(1, value);
                set.updateRow();//в этой строчке валится SQLTransactionRollbackException
            } else {
//Записей нет, ниже код для добавления записи, который выполняется на ура.
                statement = connection.prepareStatement(INSERT_INCLUDE);
                statement.setString(1, o.getId());
                statement.setString(2,  "" + year);
                statement.setString(3, "" + (month + 1));
                statement.setString(4, value);
                statement.execute();
            }
            statement.close();
        } catch (SQLException ex) {
            logger.error("method setIncludeGroupProfit() ", ex);
            throw new AdvertException(AdvertException.FIND_EXCEPTION);
        }

Пожалуста, помогите решить проблему с обновлением.
Также пробывал создавать разные connection и все равно таже проблема. Разработку веду в Netbeans и заметил что при запуске программы не могу подключиться к базе данных. Может быть в этом тоже есть часть проблемы?

PM MAIL   Вверх
ivg
Дата 12.3.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



см. Requirements for updatable cursors and updatable ResultSets
проверяйте соответствие требований.
В PreparedStatement кроме setString() есть методы для установки значений и других типов.
Updatable ResultSet позволяет также вставку значений делать, см. ResultSet#moveToInsertRow();
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0407 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.