从UNKNOWN到UNKNOWN的转换不受支持

时间:2013-07-16 18:54:07

标签: java sql sql-server jdbc

运行存储过程时出现以下异常:

com.microsoft.sqlserver.jdbc.SQLServerException:不支持从UNKNOWN到UNKNOWN的转换。

程序定义如下:

CREATE PROCEDURE spTest (
@p1 varchar(1024) ,
@p2 varchar(1024) ,
@p3 char(1) ,
@p4 varchar(254),
@p5 varchar(254),
@debug bit )

我在Java中的参数定义如下:

  

对象[] params = {“1,2,3”,“d”,“2”,“”,“”,1};

我认为这是由角色造成的。有什么想法吗?

2 个答案:

答案 0 :(得分:7)

我找到了。发条 - 缪斯让我走上了正轨。设置参数时,char类型不会转换为Object。以下内容适用:

     try (PreparedStatement st = con.prepareStatement(query)) {
        int n = 1;
        for (Object o : params) {

            if (o instanceof Character) {
                o = "" + o;
            }

            st.setObject(n, o);
            n++;
        }
        st.executeQuery();
    }

答案 1 :(得分:2)

如果您使用 jdbcTemplate.update(sql, List<Object[]>, int[]) 而想使用 jdbcTemplate.batchUpdate(sql, List<Object[]>, int[]),则可能会发生此错误。

它编译通过,因为jdbcTemplate中有一个jdbcTemplate.update(sql, Object...)方法,但是它会产生“不支持从UNKNOWN到UNKNOWN的转换。”,因为它不能使用List<Object[]>作为参数。