Измените строковые значения в списке <String>на java. sql .date для вставки в SQL DB - PullRequest
1 голос
/ 24 февраля 2020

У меня есть 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.

Буду признателен за любую помощь!

1 Ответ

5 голосов
/ 24 февраля 2020

Драйвер JDB C служит мостовым адаптером между типами / данными в вашем коде 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();
}

Драйвер JDB C 4.2 должен знать, как обращаться с Java LocalDate объект. Возможно, с текстовыми датами все в порядке, потому что они представлены в формате ISO, но лучше избегать работы со строковыми датами как в Java, так и в SQL.

.
...