如何插入" null"将Spring JDBC Framework的时间戳记添加到DB2数据库中

时间:2017-08-04 19:19:09

标签: spring spring-jdbc

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

我今天尝试为我的数据库中的表创建一个INSERT查询。查询非常简单,它可以作为DB2查询使用,它看起来像这样:

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

在我的Java类中,我创建了以下方法:

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;
    }

并且它工作正常,因为我写的所有其他查询也都可以。

当我尝试插入&#34; null&#34;作为查询中的时间戳参数,我成了一个例外。

如何插入&#34; null&#34;使用Spring JDBC Framework的时间戳值?

我真的很感激收到反馈。

1 个答案:

答案 0 :(得分:0)

我已经进行了一段时间的修改,我发现我可以在查询中硬编码null,然后查询工作正常。

使用硬编码&#34; null&#34;查询如下所示:

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数据库中的新记录,其中包含&#34; null&#34;列&#34; UNSUBSCRIPTIONDATETIME&#34;。

的值