我正在尝试使用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)
  • 然后将月份设置为六月。如果您认为将月份设置为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);
    

    关于java - 使用Java在Postgresql中输入日期值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7662617/

    10-09 16:38
    查看更多