JDBC and getTimestamp() exception

Поиск
Список
Период
Сортировка
От idealab@sirius.pisa.it
Тема JDBC and getTimestamp() exception
Дата
Msg-id 000101c0b20c$d7ad89c0$ca0afac3@techserver
обсуждение исходный текст
Ответы Re: JDBC and getTimestamp() exception  (Peter T Mount <peter@retep.org.uk>)
Список pgsql-bugs
We are running a PostgreSQL server on a Debian 2.2 and we have problems with
the
mothod getTimestamp() of the ResultSet class;
we have find that if we insert a timestamp on a table, for example
'2000-10-09 12:21:34.321+01'
when we try to read that tuples using the JDBC driver we have an exception
on position 19.
The exception is caused by the milliseconds part of the timestamp!

We are using the following version of the data base
PostgreSQL 7.0.0 on i686-pc-linux-gnu, compiled by gcc 2.95.2
and we have tried to use the JDBC driver of the 7.1 release (downloading it
from CVS)

If we change the getTimestamp() methods of the
jdbc.postgresql.jdbc2.ResultSet

// Original code
public Timestamp getTimestamp(int columnIndex) throws SQLException
{
 String s = getString(columnIndex);
     if(s==null)
  return null;

     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:sszzz");

     try {
  return new Timestamp(df.parse(s).getTime());
     } catch(ParseException e) {
  throw new PSQLException("postgresql.res.badtimestamp",new
Integer(e.getErrorOffset()),s);
     }
}

with the following code

// New code
public Timestamp getTimestamp(int columnIndex) throws SQLException
{
 String s = rs.getString(columnIndex);
 if (s==null) return;

 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSzzz");

 try {
  return new Timestamp(df.parse(s).getTime());
 } catch(ParseException e1) {

  df=new SimpleDateFormat("yyyy-MM-dd HH:mm:sszzz");
  try {
   return new Timestamp(df.parse(s).getTime());
  } catch(ParseException e2) {
   throw new PSQLException("postgresql.res.badtimestamp",new
Integer(e2.getErrorOffset()),s);
  }

 }
}

we have no exceptions from the JDBC driver!
(but why is a new SimpleDateFormat created every time something call this
methods? if we
create this object when the ResultSet is created we can avoid to create a
new
SimpleDateFormat every time the getTimestamp methods is called)

-Massimiliano Giorgi

Excuse me for my bad English.

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

Предыдущее
От: Krzysztof Czuma
Дата:
Сообщение: Re: psql crashes postmaster
Следующее
От: "Romolo Manfredini"
Дата:
Сообщение: regcomp problems