powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / работа с SQL / DAO
36 сообщений из 36, показаны все 2 страниц
работа с SQL / DAO
    #38663540
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, есть проблема.
есть кусочек кода, условный довольно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
PreparedStatement pSt = null;
        try {
                    pSt = connection.prepareStatement("DELETE FROM NEWS WHERE ID_NEWS IN (1, 2)");
                    pSt.executeUpdate();
             } catch (SQLException e) {
                   //....
             }finally{
                  //закрываем тут все коннекшены и тд
             }


проблема заключается в том, что код отрабатывает с БД, не выкидывая никаких ошибок, но изменений в ней не проиходит.
как такое вообще может быть? в чем может быть причина?
буду очень благодарен за любую помощь
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38663586
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex021проблема заключается в том, что код отрабатывает с БД, не выкидывая никаких ошибок, но изменений в ней не проиходит.
как такое вообще может быть? в чем может быть причина?
буду очень благодарен за любую помощь

А коммит?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38663630
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,
что вы имеете ввиду? в sql запросе писать или о чем вы?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38663741
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гугл в помощь
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664021
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For All,

спасибо, коненчо) но разве обязательно писать как транзакцию такой простой запрос? обычно транзакции, на соклько я знаю, пишут в случае проведения изменений в нескольких таблицах? поправьте , если я не прав.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664823
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex021,

Транзакции обязательно. Всегда. Везде. Запомни и всегда делай только так
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664901
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMousealex021,

Транзакции обязательно. Всегда. Везде. Запомни и всегда делай только так
спорное утверждение
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664955
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяспорное утверждение"Для фиксации результата delete нужен commit" - спорное утверждение?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664982
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяMikkiMousealex021,

Транзакции обязательно. Всегда. Везде. Запомни и всегда делай только так
спорное утверждение

Есть sql базы, работающие без транзакций?
Нет, бывают извращения вроде MySQL на каком-то из движков, но это всё ж редкость.

PS: NoSQL обычно не поддерживают JDBC :)
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664995
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадяспорное утверждение"Для фиксации результата delete нужен commit" - спорное утверждение?

не обязательно.
первоисточник, пожалуйста.
у меня работает без commit.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38664998
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первым делом я б проверил права на удаление из таблицы
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665027
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяBasil A. Sidorovпропущено...
"Для фиксации результата delete нужен commit" - спорное утверждение?

не обязательно.
первоисточник, пожалуйста.
у меня работает без commit.

connection.setAutoCommit(true|false).
Можно выставить так, чтобы каждый update/select/delete сам вызывал commit.
Что там getAutoCommit говорит?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665037
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяу меня работает без commit.
просто кто-то делает это вместо тебя
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665256
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяу меня работает без commit.
просто кто-то делает это вместо тебя

святой дух?
кто?
первоисточник на необходимость транзакций?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665309
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпервоисточник на необходимость транзакций?
Документация по Вашей СУБД. Если она позволяет изменять данные только в рамках транзакции (явной или неявной) то есть такая необходимость. Если Позвоялет внетранзакционные изменения, то то, что написано в ТЗ.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665314
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяPetro123пропущено...

просто кто-то делает это вместо тебя

святой дух?

Я тебе писал 16140668 , кто.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665339
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньеввадяпервоисточник на необходимость транзакций?
Документация по Вашей СУБД. Если она позволяет изменять данные только в рамках транзакции (явной или неявной) то есть такая необходимость. Если Позвоялет внетранзакционные изменения, то то, что написано в ТЗ.

тогда надо дождаться от ТС название его базы..

Alexey Tomin connection.setAutoCommit(true|false).
Можно выставить так, чтобы каждый update/select/delete сам вызывал commit.
ну если у меня это прописывает святой дух...
зы
у меня mysql
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665402
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяAlexey Tomin connection.setAutoCommit(true|false).
Можно выставить так, чтобы каждый update/select/delete сам вызывал commit.
ну если у меня это прописывает святой дух...

Нередко по-умолчанию именно что autoCommit=true.
Ты всё же посмотри- узнаешь много интересного.

вадяу меня mysql

Там вроде в MyISAM вообще нет транзакций- что-то совсем убогое. В InnoDB есть.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665457
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там по умолчанию стоит autoCommit, при установке сервера.
и если кто-то лазит и правит то это ....
ведь для нормального использования есть
START TRANSACTION;
COMMIT;
ну да, как проверка при возможном доступе кривых ручек - стоит проверить
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665462
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Вадя,

Какая связь между "при установке сервера" и функциями клиентского JDBC ?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665516
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяPetro123пропущено...

просто кто-то делает это вместо тебя

святой дух?
кто?
первоисточник на необходимость транзакций?
например, SQLPlus.exe для оркла - его утилита.
Она (можно настроить) в конце коннекта сама делает коммит.
Вопрос о необходимости транзакции не имеет смысла.
Кто-то всё равно на клиенте Это делает )))
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665521
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяSTART TRANSACTION;
вот это НЕобязательно, т.к. сервер САМ стартует транзакцию (неявно) на ИЗМЕНЕНИЕ данных.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665552
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяSTART TRANSACTION;
вот это НЕобязательно, т.к. сервер САМ стартует транзакцию (неявно) на ИЗМЕНЕНИЕ данных.

Во-первых, он так же стартует транзакцию на чтение данных. Тот же Оракл- сам. А некоторые сервера хотят этого от клиента явно (и завершать- тоже явно, даже на чтение).
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38665635
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominТот же Оракл- сам.
Если уж быть точным, то для старта транзакции на чтение Oracle требуется явное указание.
Если транзакция не начата, то она версионнику и не требуется.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666000
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAlexey TominТот же Оракл- сам.
Если уж быть точным, то для старта транзакции на чтение Oracle требуется явное указание.
Если транзакция не начата, то она версионнику и не требуется.

А как же тогда можно простым select'ом получить "snapshot too old"? Вот как раз версионникам она и требуется- конкретно в interbase/firebird транзакции чтения надо стартовать явно :)
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666028
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominА как же тогда можно простым select'ом получить "snapshot too old"?
Так это как раз следствие отсутствия транзакции - данные, которые захотели прочитать, вовремя не заблокировали и они утекли из базы.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666368
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAlexey TominА как же тогда можно простым select'ом получить "snapshot too old"?
Так это как раз следствие отсутствия транзакции - данные, которые захотели прочитать, вовремя не заблокировали и они утекли из базы.
Категорически не согласен. При старте (неявной) транзакции она запрещает удалять из сегмента старых данных. Если во время выполнения select'а было слишком много изменений (а все данные держатся- вдруг наш select до них дойдёт?)- вылезает ошибка.
Иначе мы не могли б получить согласованное чтение данных
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666454
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominPetro123пропущено...

вот это НЕобязательно, т.к. сервер САМ стартует транзакцию (неявно) на ИЗМЕНЕНИЕ данных.

Во-первых, он так же стартует транзакцию на чтение данных. Тот же Оракл- сам. А некоторые сервера хотят этого от клиента явно (и завершать- тоже явно, даже на чтение).
давайте ближе к практике Господа. И не ругаться словами "сегмент".
- если не было Commit с клиента на запрос модификации, то изменения не произойдут (сабж)
- если не было START TRANSACTION с клиента на запрос чтения, то ничего "страшного не произойдёт". Мы получим данные.
Так?
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666738
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominИначе мы не могли б получить согласованное чтение данных
Oracle получает их иначе.
Поскольку он версионник, то он хранит не сами данные, а их состояние на определенные моменты времени (снимки).
Выбрав любой момент времени (на который ему хватит сегмента отката) можно прочитать это состояние, для этого транзакция не нужна. Он же пишет, что снимок устарел, а не транзакция.
Транзакция нужна либо для атомарности изменений, либо как один из механизмов для согласованного чтения нескольких запросов.
Поэтому она и не создается вплоть до момента начала изменений или явного старта.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666780
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAlexey TominИначе мы не могли б получить согласованное чтение данных
Oracle получает их иначе.
Поскольку он версионник, то он хранит не сами данные, а их состояние на определенные моменты времени (снимки).
Выбрав любой момент времени (на который ему хватит сегмента отката) можно прочитать это состояние, для этого транзакция не нужна. Он же пишет, что снимок устарел, а не транзакция.
Транзакция нужна либо для атомарности изменений, либо как один из механизмов для согласованного чтения нескольких запросов.
Поэтому она и не создается вплоть до момента начала изменений или явного старта.

Непонятно.
А если у меня стартовал один длинный select, и идет фетч, во время которого другая сессия успела изменить и закоммитить какую-то запись, которая попадает в мой запрос?
Мой запрос ведь тоже будет выполняться в контексте некоей транзакции, чтобы обеспечить изолированность? Даже если я транзакцию явно не стартовал.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666890
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДиезМой запрос ведь тоже будет выполняться в контексте некоей транзакции, чтобы обеспечить изолированность? Даже если я транзакцию явно не стартовал.
IMHO.
Не совсем, он будет выполнятся привязанным к моменту времени.
Один запрос - одна операция. В Oracle он согласован сам по себе на какой-то момент времени.
Транзакция это атомарная последовательность операций. Нужна (в Oracle) для изоляции запросов на уровнь serializable или для атомарности изменений на уровне read commited.

Уровень изоляции snapshot, согласно SQL 92 для транзакий не описан. :)
Он работает вне их. Просто анализ журнала, поскольку записи журнала неизменны (immutable), то транзакции, для обеспечения согласованности их чтения не нужны.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38666966
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевДиезМой запрос ведь тоже будет выполняться в контексте некоей транзакции, чтобы обеспечить изолированность? Даже если я транзакцию явно не стартовал.
IMHO.
Не совсем, он будет выполнятся привязанным к моменту времени.
Один запрос - одна операция. В Oracle он согласован сам по себе на какой-то момент времени.
Транзакция это атомарная последовательность операций. Нужна (в Oracle) для изоляции запросов на уровнь serializable или для атомарности изменений на уровне read commited.

Уровень изоляции snapshot, согласно SQL 92 для транзакий не описан. :)
Он работает вне их. Просто анализ журнала, поскольку записи журнала неизменны (immutable), то транзакции, для обеспечения согласованности их чтения не нужны.

Isolation - это один из признаков модели ACID. Как может уровень изоляции snapshot существовать все транзакции, если уровень изоляции - это свойство транзакции? :)

Это я к тому, что любой запрос к реляционной СУБД (в т.ч. Oracle) выполняется в рамках транзакции. Если клиент явно ее не стартует, значит это делает драйвер. При любой архитектуре СУБД.
Также и с закрытием транзакции: не закрыл сам - драйвер сделает commit или rollback исходя из личных предпочтений.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38667129
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Диез]Сергей АрсеньевIsolation - это один из признаков модели ACID. Как может уровень изоляции snapshot существовать все транзакции, если уровень изоляции - это свойство транзакции? :)
Еще раз повторю - такого уровня изоляции нет согласно SQL 92.

Snapshot делается не за счет транзакции, а наоборот транзакция может использовать снимки.

Для обычного запроса Oracle достаточно снимка.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38667456
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Сергей Арсеньев]Диезпропущено...

Еще раз повторю - такого уровня изоляции нет согласно SQL 92.

Snapshot делается не за счет транзакции, а наоборот транзакция может использовать снимки.

Для обычного запроса Oracle достаточно снимка.

Всё, теперь понятно :) Я транзакцию понимаю в логическом смысле - как общий принцип обеспечения целостности данных. Вы говорите про внутренний механизм Oracle, связанный с записью в файлы.
Оказывается, на форуме Оракла эти баталии идут давно.
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38667778
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Диез]Сергей АрсеньевВсё, теперь понятно :) Я транзакцию понимаю в логическом смысле - как общий принцип обеспечения целостности данных.
IMHO. Транзакция это атомарная последовательность операций. Это один из способов обеспечения целостности данных.
Для неизменяемых объектов она не требуется. С ними можно делать все что угодно (чтение) в произвольном порядке - их согласованность не нарушится. Что и используют версионники, работая с данными, какие были на какой-то момент времени.
Фиксация атомарной последовательности им нужна, в основном, для согласованного изменения актуальных данных (ну или для фиксации момента времени по умолчанию).
...
Рейтинг: 0 / 0
работа с SQL / DAO
    #38667910
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Так это как раз следствие отсутствия транзакции - данные, которые захотели прочитать, вовремя не заблокировали и они утекли из базы."Snapshot to old" это комбинация из "оптимистичная фиксация" и "слишком долгая транзакция".
А совсем не то, что вы написАли.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / работа с SQL / DAO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]