所以我有一个Product.java类:
Public class Product{
private String id;
private String name;
private float price;
}
我有一个从数据库中获取数据的Product列表:
public List<Product> getProductList() {
List<Product> list = new ArrayList<Product>();
String sql = "SELECT * FROM Product";
try {
Statement st = getConnection().createStatement();
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
String id = rs.getString(1);
String name = rs.getString(3);
float price = rs.getFloat(4);
Product p = new Product();
p.setId(id);
p.setName(name);
p.setPrice(price);
list.add(p);
}
rs.close();
st.close();
} catch (SQLException ex) {
Logger.getLogger(DataProcess.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
我将一些产品添加到另一个列表中,现在我想将该列表添加回数据库到表Sold中,但我只知道如何将Product项添加到数据库,而不是整个列表。有没有办法将列表添加到数据库?
答案 0 :(得分:0)
这可以通过 PreparedStatement 的 addBatch()和 executeBatch()方法来实现,正如其他答案所示:
这是前两个答案的混合:
PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)"); ps.setString(1, "John"); ps.setString(2,"Doe"); ps.addBatch(); ps.clearParameters(); ps.setString(1, "Dave"); ps.setString(2,"Smith"); ps.addBatch(); ps.clearParameters(); int[] results = ps.executeBatch();
消息来源:https://stackoverflow.com/a/3786127
在您的情况下,您将设置必要的参数,然后在列表上的循环的每次迭代中调用 addBatch(),然后在循环调用之后调用 executeBatch()
如果数据库对批处理设置限制并且在其JDBC驱动程序中透明地处理这些限制,则可能需要在一定数量的项目之后在循环内调用 executeBatch()。