使用Java在Postgresql中输入Date值

Zza*_*zap 3 java postgresql date jdbc

我正在尝试使用java和PostgreSQL编写数据库应用程序.我有一些日期数据类型的行.但是我无法使用以下代码向数据库添加任何条目:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);

preparedStatement prep = connection.prepareStatement("insert 
into exampletable values (?,?);");
prep.setDate(1, (java.sql.Date) aDate);
prep.setDate(2, (java.sql.Date) aDate);
Run Code Online (Sandbox Code Playgroud)

如何在java中使用查询在postgreSQL行中添加日期?

Jon*_*eet 6

目前尚不清楚这是否是您唯一的问题,但这段代码几乎肯定不是您想要的:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);
Run Code Online (Sandbox Code Playgroud)
  • 它会抛出一个NullPointerException因为你试图取消引用null
  • 然后你试图将年份定为3890AD(java.util.Date基于1900年的年份)
  • 然后,您将月份设置为6月.如果您认为您将月份设置为5月,请再想一想 - Date数月为0
  • 您正在使用的所有方法都已弃用 - 这应该为您提供一个重要警示灯
  • 你正试图施展aDate,java.sql.Date但没有迹象表明它一个java.sql.Date

我会建议:

  • 使用Joda Time作为更好的日期/时间API,或者java.util.Calendar
  • 确保在设置值之前实际创建实例
  • 以后可能会创建一个新的java.sql.Date.

例如:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 1990);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, 4); // Assuming you wanted May 1st

java.sql.Date date = new java.sql.Date(calendar.getTime().getTime());

// Ideally specify the columns here as well...
PreparedStatement prep = connection.prepareStatement(
    "insert into exampletable values (?,?)");
prep.setDate(1, date);
prep.setDate(2, date);
Run Code Online (Sandbox Code Playgroud)