代码之家  ›  专栏  ›  技术社区  ›  Origamer7

如何使用Spring JDBC框架将“null”时间戳插入DB2数据库

  •  0
  • Origamer7  · 技术社区  · 7 年前

    我创建了一个Java web应用程序,在其中使用Spring JDBC框架,以便编写DB2数据库的查询。到目前为止,所有的查询都运行良好。

    INSERT INTO MYDB.USERSUBSCRIPTION (USERNAME, SUBSCRIPTIONDATETIME, UNSUBSCRIPTIONDATETIME)
    VALUES('JamesTheBoss', '2017-07-07 07:07:07.007', null);
    

    private Timestamp getCurrentDateTimeInTimeStamp() {
            LocalDateTime currentDateAndTime = LocalDateTime.now();
            currentDateAndTime.format(DateTimeFormatter.ofPattern("yyy-MM-dd HH:MM:SS.mm")).replaceAll("T", " ");
            Timestamp timestamp = Timestamp.valueOf(currentDateAndTime);      
            return timestamp;
        }
    
    public void insertNewUserToDatabase(String username){    
            Timestamp  timestamp = getCurrentDateTimeInTimeStamp();
            String SQL = "INSERT INTO MYDB.USERSUBSCRIPTION (USERNAME, SUBSCRIPTIONDATETIME, UNSUBSCRIPTIONDATETIME) " +
                         "VALUES(?, ?, ?)";
            this.jdbcTemplateObject = new JdbcTemplate(dataSource);
            jdbcTemplateObject.update(SQL,new Object[] { username, timestamp, null});
        }
    

    我的第一个问题是:

    public List<UserSubscription> getAllUserSubscriptions() throws SQLException {
            String SQL = "SELECT * FROM MYDB.USERSUBSCRIPTION";
            this.jdbcTemplateObject = new JdbcTemplate(dataSource);
            List<UserSubscription> userSubscription = jdbcTemplateObject.query(SQL, new UserSubscriptionMapper());
            return userSubscription;
        }
    

    它工作得很好,就像我编写的所有其他查询一样。

    如何使用Spring JDBC框架为时间戳插入“null”值?

    如果能得到反馈,我将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Origamer7    7 年前

    我已经去bug了一段时间,我发现我可以在查询中硬编码一个null,然后查询就可以正常工作了。

    public void insertNewUserToDatabase(String username){    
            Timestamp  timestamp = getCurrentDateTimeInTimeStamp();
            String SQL = "INSERT INTO MYDB.USERSUBSCRIPTION (USERNAME, SUBSCRIPTIONDATETIME, UNSUBSCRIPTIONDATETIME) " +
                         "VALUES(?, ?, null)"; // <--- Hard Coded "null"
            this.jdbcTemplateObject = new JdbcTemplate(dataSource);
            jdbcTemplateObject.update(SQL,new Object[] { username, timestamp});
        }
    

    当执行此查询时,我成为DB2数据库中的一条新记录,列“UNSUBSCRIPTIONDATETIME”的值为“null”。