Java将列表添加到数据库

时间:2015-11-11 10:39:25

标签: java sql

所以我有一个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项添加到数据库,而不是整个列表。有没有办法将列表添加到数据库?

1 个答案:

答案 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()