使用Java在Postgresql中输入Date值

我正在尝试使用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); 

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

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

 Date aDate = null; aDate.setYear(1990); aDate.setDate(01); aDate.setMonth(05); 
  • 它会抛出一个NullPointerException因为你试图取消引用null
  • 然后您尝试将年份设置为3890AD( java.util.Date是基于1900年的多年)
  • 然后,您将月份设置为6月。 如果您认为您将月份设置为5月,请再想一想 – Date是基于0的月份
  • 您正在使用的所有方法都已弃用 – 这应该为您提供一个重要警示灯
  • 您正在尝试将aDatejava.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);