Re: jdbc problem with time

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: jdbc problem with time
Дата
Msg-id 3D2B4467.9080301@xythos.com
обсуждение исходный текст
Ответ на jdbc problem with time  (Laurette Cisneros <laurette@nextbus.com>)
Ответы Re: jdbc problem with time  (Laurette Cisneros <laurette@nextbus.com>)
Re: jdbc problem with time  (Laurette Cisneros <laurette@nextbus.com>)
Список pgsql-jdbc
Laurette,

What version are you using?  Can you still reproduce the problem with
the latest development drivers (which you can download from
jdbc.postgresql.org)?

thanks,
--Barry

Laurette Cisneros wrote:

>Any ideas on this?
>
>We have a table:
>
>xyzzy=# select sched_id, tod_start, tod_end from schedule where sched_id=1;
>
> sched_id | tod_start |    tod_end
>----------+-----------+---------------
>        1 | 00:00:00  | 23:59:59.9990
>
>Notice the millisecond values set for tod_end.  The jdbc driver barfs when
>trying to read the time from the result set using the java code:
>Time t = rs.getTime("tod_end");
>
>The stack trace from here looks like:
>
>java.lang.StringIndexOutOfBoundsException: String index out of range: 19
>at java.lang.String.substring(String.java:1522) at
>org.postgresql.jdbc2.ResultSet.toTime(ResultSet.java:1586) at
>org.postgresql.jdbc2.ResultSet.getTime(ResultSet.java:385) at
>org.postgresql.jdbc2.ResultSet.getTime(ResultSet.java:612) at
>COM.NextBus.signad.SelectScheduleDetails.getObject(SelectScheduleDetails.java:30)
>at
>
>Here is the offending piece of code.  It fails in the case where the time
>string looks like: "HH:MM:SS:mmmm".  The code assumes that anything longer
>than 8 characters is a timestamp and tries to get a substring accordingly.
>However, the substring call fails, since this is a "time without time
>zone" and not an SQL timestamp.
>
>Here is the code:
>
>public static Time toTime(String s) throws SQLException
>{
>    if (s == null)
>        return null; // SQL NULL
>    // length == 8: SQL Time
>    // length >  8: SQL Timestamp
>    try
>    {
>       return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11, 19));
>    }
>    catch (NumberFormatException e)
>    {
>       throw new PSQLException("postgresql.res.badtime", s);
>    }
>}
>
>
>Thanks for the help,
>
>---
>Laurette Cisneros
>The Database Group
>(510) 420-3137
>NextBus Information Systems, Inc.
>www.nextbus.com
>----------------------------------
>"Intelligence complicates. Wisdom simplifies."
>  -- Mason Cooley
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 2: you can get off all lists at once with the unregister command
>    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
>
>



В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Laurette Cisneros
Дата:
Сообщение: jdbc problem with time
Следующее
От: Laurette Cisneros
Дата:
Сообщение: Re: jdbc problem with time