2015-03-02 39 views
1

我打電話的存儲過程在MySql數據庫SimpleJdbcCall時參數不插入空爲NULL值

CREATE PROCEDURE `sp_1` (IN in_param1 VARCHAR(255)) 
BEGIN 
    INSERT INTO t_1 (field1) VALUES (in_param1); 
END 

SimpleJdbcCall對象:

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource); 
jdbcCall.withoutProcedureColumnMetaDataAccess(); 
jdbcCall.withProcedureName(procedureName); 

String paramValue = "new value"; 

MapSqlParameterSource map = new MapSqlParameterSource(); 
jdbcCall.addDeclaredParameter(new SqlParameter(Types.VARCHAR)); 
map.addValue("in_param1", paramValue, Types.VARCHAR); 

SqlParameterSource sqlParameterSource = map; 

jdbcCall.execute(sqlParameterSource); 

它工作正常,除了當paramValue變量空:

String paramValue = null; 

在這種情況下,該字段具有「空」文本而不是數據庫中的NULL值。

有沒有人有任何想法,我該如何創建參數發送一個真正的NULL值到數據庫?

在此先感謝!

回答

2

嘗試

map.addValue("in_param1", paramValue, Types.NULL); 
+1

我已經試過你的建議('java.sql.Types.NULL'),結果是一樣的:在該領域「零」的文字。 – jsaludas 2015-03-02 14:47:24

+0

我正在使用舊版本的jdbc庫。感謝您的幫助@konstantin – jsaludas 2015-03-03 17:02:04