是否可以避免在For循环中创建java.sql.Date对象

时间:2016-04-21 13:04:04

标签: java

在将日期插入mysql时,我有以下代码

DateFormat format_date = new SimpleDateFormat("yy-mm-dd");
for (Stocker s : symbol_set) {
    insert_stmt.setString(1, s.getName());
    insert_stmt.setDouble(2, s.getPrice());
    Date d = format_date.parse(s.getCurr_day());
    java.sql.Date sqlDate = new java.sql.Date(d.getTime()); 
    insert_stmt.setDate(3, sqlDate);
    insert_stmt.setString(4, s.getVolume());
    insert_stmt.setDouble(5, s.getGainloss());
    insert_stmt.addBatch();
}
insert_stmt.executeBatch();

你能不能让我知道是否有可能避免在For循环中创建java.sql.Date对象或这是正常的行为而且不能被跳过?

1 个答案:

答案 0 :(得分:3)

这实际上取决于PreparedStatement.setDate()addBatch()的实施情况。

如果这些方法适当地克隆了所有相关数据,您可以在循环外创建一个java.sql.Date实例,然后在调用{{setTime之前调用setDate 1}}。

但是,这种行为没有记录,所以我个人不想依赖它。 (这是可变类型的一个烦恼 - 您可以轻松保证变异和重用的效果。)基本上正常行为,除非您真的很依赖特定的实现细节 - 对我来说这听起来真是个坏主意。

好消息是每个实例都会很小......如果这个真的是一个性能问题,那么我会感到非常惊讶与数据库交谈。