本文介绍了使用Java在Postgresql中输入Date值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用java& PostgreSQL。我有一些行日期数据类型。但是我不能使用以下代码添加任何条目到数据库中:
I am trying to program a database application with java & PostgreSQL. I have some rows with date data type. But i cant add any entries to the database with this code :
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);
如何在postgreSQL行中添加一个日期,在java中有查询?
How can i add a date in a postgreSQL row with queries in java?
推荐答案
目前还不清楚这是否是您唯一的问题,但这段代码几乎肯定不是你想要的:
It's not clear whether or not this is your only problem, but this code is almost certainly not what you want:
Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);
- 它会抛出一个
NullPointerException
因为你试图取消引用null
- 你正在尝试将年份设置为3890AD(
java.util.Date
是基于1900年的多年) - 然后你将设置月份到6月。如果你以为你把这个月的时间设定到了5月份,那么再考虑一下 -
日期
是以0为基础的月份 - 重新使用已被弃用 - 应该为您提供一个大警戒灯
- 然后您尝试将
aDate
转换为java.sql.Date
,但没有迹象表明它是 ajava.sql.Date
- It will throw a
NullPointerException
because you're trying to dereferencenull
- You're then trying to set the year to 3890AD (
java.util.Date
is 1900-based for years) - You're then setting the month to June. If you thought you were setting the month to May, think again -
Date
is 0-based for months - All the methods you're using are deprecated - that should raise a big warning light for you
- You're then trying to cast
aDate
tojava.sql.Date
but there's no sign that it is ajava.sql.Date
- a href =http://joda-time.sf.net =nofollow> Joda Time 作为一个更好的日期/时间API,或
java.util.Calendar
- 确保在设置值之前实际创建一个实例
- 可能创建一个新的
java .sql.Date
稍后。 - Either use Joda Time as a far better date/time API, or
java.util.Calendar
- Make sure you actually create an instance before you set values
- Probably create a new
java.sql.Date
later on.
我会建议:
例如:
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在Postgresql中输入Date值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!