Re: jdbc problem with time

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: jdbc problem with time
Дата
Msg-id 3D2B87BC.8010904@xythos.com
обсуждение исходный текст
Ответ на Re: 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,

I have committed a fix for this bug.  Please try the latest dev build on
the website to see that it fixes your problem.

thanks,
--Barry

Laurette Cisneros wrote:

>Yes, the bug still exists in the latest development driver.
>
>Thanks,
>
>L.
>On Tue, 9 Jul 2002, Barry Lind wrote:
>
>
>
>>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
Дата:
Сообщение: Re: jdbc problem with time
Следующее
От: longjohn
Дата:
Сообщение: Connect using md5