У меня есть следующий случай, когда я пытаюсь вызвать метод callDB несколько раз (у меня есть миллионы записей для вставки базы данных) с разными операторами sql. У меня будет отдельная логика, которую я буду фиксировать при подключении каждые пару секунд для повышения производительности. Здесь следует отметить одну вещь: в моем случае все эти операторы независимы друг от друга, и я хочу быть уверен, что в случае сбоя какого-либо из них я хочу зафиксировать все предыдущие действительные операторы и не хочу выполнять какой-либо откат. . Я уже добавил conn.commit() в блок catch, но это не помогает. Он откатывает все предыдущие транзакции, которые действительны и должны быть добавлены в базу данных. Пожалуйста, проигнорируйте синтаксическую ошибку, если она есть
conn.setAutoCommit(false);
callDB("valid sql");
callDB("invalid sql");
callDB(String sql){
try{
Statement statement= conn.createStatement();
// Adding SQL statements to the batch
statement.addBatch(sql);
// Executing the batch
int[] updateCounts = statement.executeBatch();
}catch(Exception e){
conn.commit();
}
}
//another logic where it executes conn.commit() method every couple of seconds.
Подробнее здесь: https://stackoverflow.com/questions/792 ... statements
Jdbc autocommit(false) поведение фиксации для нескольких операторов выполненияBatch ⇐ JAVA
Программисты JAVA общаются здесь
1732375715
Anonymous
У меня есть следующий случай, когда я пытаюсь вызвать метод callDB несколько раз (у меня есть миллионы записей для вставки базы данных) с разными операторами sql. У меня будет отдельная логика, которую я буду фиксировать при подключении каждые пару секунд для повышения производительности. Здесь следует отметить одну вещь: в моем случае все эти операторы независимы друг от друга, и я хочу быть уверен, что в случае сбоя какого-либо из них я хочу зафиксировать все предыдущие действительные операторы и не хочу выполнять какой-либо откат. . Я уже добавил conn.commit() в блок catch, но это не помогает. Он откатывает все предыдущие транзакции, которые действительны и должны быть добавлены в базу данных. Пожалуйста, проигнорируйте синтаксическую ошибку, если она есть
conn.setAutoCommit(false);
callDB("valid sql");
callDB("invalid sql");
callDB(String sql){
try{
Statement statement= conn.createStatement();
// Adding SQL statements to the batch
statement.addBatch(sql);
// Executing the batch
int[] updateCounts = statement.executeBatch();
}catch(Exception e){
conn.commit();
}
}
//another logic where it executes conn.commit() method every couple of seconds.
Подробнее здесь: [url]https://stackoverflow.com/questions/79218195/jdbc-autocommitfalse-commit-behaviour-for-multiple-executebatch-statements[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия