【问题标题】:Change String values in List<String> to java.sql.date values to insert into SQL DB将 List<String> 中的字符串值更改为 java.sql.date 值以插入 SQL DB
【发布时间】:2020-06-08 07:37:52
【问题描述】:

我有一个ListString 值,其中包含"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 值。

任何帮助将不胜感激!

【问题讨论】:

标签: java sql date arraylist jdbc


【解决方案1】:

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 中使用字符串日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-28
    • 2012-09-17
    • 2019-11-23
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多