我有一个List
的String
值,其中包含"yyyy-MM-dd"
格式的日期。
我目前正在尝试遍历列表,以将各个值添加到数据库中。
如何将String
列表中的各个String
值转换为java.sql.Date
值,以使其与数据库中包含的数据类型相匹配?
下面是我使用的代码示例:
List<String> accessedDate = usageEvent.getDate();
List<Integer> totlUsageHits = usageEvent.getHits();
List<Integer> totlUsageVisitors = usageEvent.getVisitors();
Iterator<String> accessDate = accessedDate.iterator();
Iterator<Integer> hits = totlUsageHits.iterator();
Iterator<Integer> visitors = totlUsageVisitors.iterator();
while (accessDate.hasNext() && hits.hasNext() && visitors.hasNext()) {
insert.setDate(1, accessDate.next());
insert.setInt(2, hits.next());
insert.setInt(3, visitors.next());
insert.addBatch();
}
我有insert.setDate(1, accessDate.next());
的地方,我想将String
值从此列表更改为java.sql.Date
值。
任何帮助将不胜感激!
JDBC驱动程序充当Java代码中的类型/数据与将在SQL数据库上运行的实际语句之间的桥梁适配器。这里的一种方法是将文本Java日期转换为LocalDate
,然后将它们作为对象绑定到语句:
while (accessDate.hasNext() && hits.hasNext() && visitors.hasNext()) {
String date = accessDate.next();
LocalDate localDate = LocalDate.parse(date);
insert.setObject(1, localDate);
insert.setInt(2, hits.next());
insert.setInt(3, visitors.next());
insert.addBatch();
}
JDBC 4.2驱动程序应该知道如何处理Java LocalDate
对象。您实际上可能对文本日期还满意,因为它采用ISO格式,但是最好避免在Java和SQL中使用字符串日期。