2017-08-04 19 views
0

DB2データベースのクエリを書くためにSpring JDBC Frameworkを使用するJava Webアプリケーションを作成しました。これまでのところ、すべてのクエリが優れています。Spring JDBC Frameworkで「null」タイムスタンプをDB2データベースに挿入する方法

私は今日私のデータベースにあるテーブルのINSERTクエリを作成しようとしました。私の最初のクエリは、次のされた

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

私は次のメソッドを作成し、私のJavaクラスで

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

:クエリは、DB2クエリーとして動作し、それはこのようになり、ストレートforword本当にあります

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

他のすべてのクエリと同様に正常に動作します。

タイムスタンプパラメータとして「null」を挿入しようとすると、例外になります。

Spring JDBC Frameworkを使用してタイムスタンプに「null」値を挿入するにはどうすればよいですか?

フィードバックをいただきありがとうございます。

+0

例外の内容をお知らせください。そしてあなたのデータベーステーブルがどのように定義されているか。タイムスタンプ列は、データベースでNULL可能と定義されていますか? – Ben

答えて

0

私はしばらくdebbugingしていました。私は自分のクエリで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}); 
    } 

、私はコラム「UNSUBSCRIPTIONDATETIME」の「ヌル」値を持つDB2データベースに新しいレコードになります。

関連する問題