我想用一個PreparedStatement
INSERT
幾行:的getGeneratedKeys()後了PreparedStatement.executeBatch()
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();
在這一點上,我了when期望獲得PK的每個INSERT
產生的,我得到這個SQLServerException
:
com.microsoft.sqlserver.jdbc.SQLServerException: The statement must be executed before any results can be obtained.
我希望得到一個結果有一行執行的每個插入,這樣我就可以得到每個PK產生。
我是否期待錯誤?難道我做錯了什麼?它可以以不同的方式使用批處理執行嗎?
INSERT是否被任何事務處理? –
如果你問是否INSERT成功執行,是的。當我想要檢索其密鑰時會出現問題。 – jmrodrigg
我的意思是在你可以獲得生成的密鑰之前,批處理可能需要commit()。 –