使用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的月份 - 您正在使用的所有方法都已弃用 – 这应该为您提供一个重要警示灯
- 您正在尝试将
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);