Я хочу INSERT
несколько строк с помощью PreparedStatement
:
ps = con.prepareStatement(query,PreparedStatement.RETURN_GENERATED_KEYS);
for(Element e:listOfElements){
ps.setString(1,this.col_val_1);
ps.setString(2,this.col_val_2);
ps.setInt(3,this.col_val_3);
ps.addBatch();
}
ps.executeBatch();
ResultSet rs = ps.getGeneratedKeys();
В этот момент, когда я ожидаю получить PK, сгенерированный для каждого INSERT
, я получаю это SQLServerException
:
com.microsoft.sqlserver.jdbc.SQLServerException: The statement must be executed before any results can be obtained.
Я ожидал получить ResultSet с одной строкой для каждой выполненной вставки, чтобы я мог получить каждый генерируемый PK.
Я ожидаю, что не так? Я делаю что-то неправильно? Можно ли это сделать по-другому, используя пакетное выполнение?