powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно использовать Batch в цикле?
6 сообщений из 6, страница 1 из 1
Как правильно использовать Batch в цикле?
    #33255224
Jekas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает контрукция
Код: plaintext
1.
2.
3.
4.
5.
 while  (counter <=  5 ){
   .......
   st.addBatch(запрос);
}
 int  i[] = st.executeBatch();
Добавляется только последний запрос..тоесть запросы не добавляются в общий список запросов...Или может нельзя Batch использовать в цикле, в инете везде примеры использования Batch вне цикла..
...
Рейтинг: 0 / 0
Как правильно использовать Batch в цикле?
    #33255313
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 Connection db = DriverManager.getConnection("jdbc:postgresql:Dud","postgres","pass");
PreparedStatement ps=db.prepareStatement("INSERT INTO test VALUES (?);");

 for ( int  i= 0 ;i<n;i++)
{
ps.setInt( 1 ,i);
ps.addBatch();
}
ps.executeBatch();
ps.close();
db.close();
}
}
...
Рейтинг: 0 / 0
Как правильно использовать Batch в цикле?
    #33255415
Jekas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 Connection db = DriverManager.getConnection("jdbc:postgresql:Dud","postgres","pass");
PreparedStatement ps=db.prepareStatement("INSERT INTO test VALUES (?);");

 for ( int  i= 0 ;i<n;i++)
{
ps.setInt( 1 ,i);
ps.addBatch();
}
ps.executeBatch();
ps.close();
db.close();
}
}

Все проблема только в том что я использовал Statement а нужно preparedStatement?
...
Рейтинг: 0 / 0
Как правильно использовать Batch в цикле?
    #33255436
/**
* Adds the given SQL command to the current list of commmands for this
* <code>Statement</code> object. The commands in this list can be
* executed as a batch by calling the method <code>executeBatch</code>.
* <P>
* <B>NOTE:</B> This method is optional.
*
* @param sql typically this is a static SQL <code>INSERT</code> or
* <code>UPDATE</code> statement
* @exception SQLException if a database access error occurs, or the
* driver does not support batch updates
* @see #executeBatch
* @since 1.2
*/
void addBatch( String sql ) throws SQLException;


пробовал вне цикла добавлять, то же ведь не должно работать? :)
...
Рейтинг: 0 / 0
Как правильно использовать Batch в цикле?
    #33255501
Хотя, если глянуть на тот страшный код в соседнем топике, становится ясно, что проблема в другом...


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
Statement st = ...

 while (...) {
     st.executeQuery("select ....");
     st.addBatch();
}

st.executeBatch();


вероятно, вызов executeQuery скидывает весь батч в ноль.
...
Рейтинг: 0 / 0
Как правильно использовать Batch в цикле?
    #33930676
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jekas ТимоН
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 Connection db = DriverManager.getConnection("jdbc:postgresql:Dud","postgres","pass");
PreparedStatement ps=db.prepareStatement("INSERT INTO test VALUES (?);");

 for ( int  i= 0 ;i<n;i++)
{
ps.setInt( 1 ,i);
ps.addBatch();
}
ps.executeBatch();
ps.close();
db.close();
}
}



addBatch / executeBatch предназначены для того, чтобы ускорить выполнение брольшого количества однотипных запросов (мое понимание). А за счет чего достигается ускорение? JDBC-драйвер знает о своей СУБД такое, чего сторонний программист знать не может?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно использовать Batch в цикле?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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