我正在尝试使用 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
- 然后您尝试将年份设置为公元 3890 年(
java.util.Date
是基于 1900 年的年份) - 然后您将月份设置为 6 月。如果您认为您将月份设置为五月,请再想一想 -
Date
是从 0 开始的月份 - 您正在使用的所有方法均已弃用 - 这应该为您敲响警钟
- 然后您尝试将
aDate
转换为java.sql.Date
但没有迹象表明它是java .sql.日期
我建议:
- 要么使用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);
关于java - 使用 Java 在 Postgresql 中输入日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662617/