在将日期插入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对象或这是正常的行为而且不能被跳过?
答案 0 :(得分:3)
这实际上取决于PreparedStatement.setDate()
和addBatch()
的实施情况。
如果这些方法适当地克隆了所有相关数据,您可以在循环外创建一个java.sql.Date
实例,然后在调用{{setTime
之前调用setDate
1}}。
但是,这种行为没有记录,所以我个人不想依赖它。 (这是可变类型的一个烦恼 - 您可以轻松保证变异和重用的效果。)基本上是正常行为,除非您真的很依赖特定的实现细节 - 对我来说这听起来真是个坏主意。
好消息是每个实例都会很小......如果这个真的是一个性能问题,那么我会感到非常惊讶与数据库交谈。