Prasanth wrote:
> Below is a small program to test the JDBC date issue I have having.
>
> I am able to set the date "2/1/10000". But it fails to retrieve it.
>
> If it is invalid date then it should not even update the database right?
I can't reproduce this; the attached testcase produces this against my
8.0 install:
Inserting date: 10000-02-01 AD +1300
Got date: 10000-02-01 AD +1300
Got date: 10000-02-01 AD +1300
I get this using both the -310 driver and a build from CVS HEAD.
You'll need to give us a compilable testcase that shows the problem to
take this any further. The code you provided originally doesn't compile
out-of-the-box, is missing schema information, and has a syntactically
incorrect query..
It'd also help if you can reproduce your problem without involving a
RowSet implementation.
-O
import java.sql.*;
import java.util.Calendar;
public class TestDate2 {
public static void main(String[] args) throws Exception {
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(args[0]);
Statement stmt = conn.createStatement();
try {
stmt.executeUpdate("DROP TABLE testdate2");
} catch (SQLException e) {}
stmt.executeUpdate("CREATE TABLE testdate2(d date)");
stmt.executeUpdate("INSERT INTO testdate2(d) VALUES ('10000/02/01')");
PreparedStatement ps = conn.prepareStatement("INSERT INTO testdate2(d) VALUES (?)");
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, 1);
c.set(Calendar.DATE, 1);
c.set(Calendar.YEAR, 10000);
Date d = new Date(c.getTimeInMillis());
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd G Z");
System.out.println("Inserting date: " + sdf.format(d));
ps.setDate(1, d);
ps.executeUpdate();
ResultSet rs = stmt.executeQuery("SELECT d FROM testdate2");
while (rs.next()) {
d = rs.getDate(1);
System.out.println("Got date: " + sdf.format(d));
}
rs.close();
stmt.close();
conn.close();
}
}