Bug? report : PreparedStatement.setObject(java.util.Date) don't work

From: 雨森郷太郎 <gotaroamenomori(at)gmail(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Bug? report : PreparedStatement.setObject(java.util.Date) don't work
Date: 2007-11-09 16:48:08
Message-ID: 3a69fa320711090848n7d51dc57td54f23e0754679cb@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hello.

I've faced problem similar to
http://archives.postgresql.org/pgsql-jdbc/2007-06/msg00070.php

Source:
-------------------------------------------------------------------------
package test;

import java.sql.*;
import java.util.*;

public class TestDate{
public static void main(String[] ags){
try{
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(
"jdbc:postgresql:dbname",
"user",
"pass");

PreparedStatement stmt = con.prepareStatement("select *
from table_name where column_name = ?");
stmt.setObject(1, new java.util.Date());
ResultSet rs = stmt.executeQuery();

while(rs.next()){
System.out.println( rs.getDate(1) );
}
}catch(Exception e){
e.printStackTrace();
}
}
}

-------------------------------------------------------------------------

Message:
-------------------------------------------------------------------------
org.postgresql.util.PSQLException: Can't infer the SQL type to use for
an instance of java.util.Date. Use setObject() with an explicit Types
value to specify the type to use.
at org.postgresql.jdbc2.AbstractJdbc2Statement.setObject(AbstractJdbc2Statement.java:1737)
at test.TestDate.main(TestDate.java:16)
-------------------------------------------------------------------------

It seemed org.postgresql.jdbc2.AbstractJdbc2Statement#setObject(int,
Object) can't
map java.util.Date to java.sql.Types#DATE.
So I modified AbstractJdbc2Statement.java to accept
java.util.Date,then it worked.

Modification:
-------------------------------------------------------------------------
diff postgresql-jdbc-8.2-506.src/org/postgresql/jdbc2/AbstractJdbc2Statement.java
postgresql-jdbc-8.2-506.src_mod/org/postgresql/jdbc2/AbstractJdbc2Statement.java
1717a1718,1719
> else if (x instanceof java.util.Date)
> setDate(parameterIndex, new java.sql.Date(((java.util.Date)x).getTime()));
-------------------------------------------------------------------------

Is this good solution?
Please advice.

Gotaro AMENOMORi

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message dmp 2007-11-09 20:40:13 Re: Bug? report : PreparedStatement.setObject(java.util.Date) don't work
Previous Message Thomas Hallgren 2007-11-09 15:21:12 Re: gborg -> pgfoundry