9

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

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 中的参数定义如下:

对象[] 参数 = {"1,2,3", "d", '2', "", "", 1};

我觉得是性格造成的。任何想法为什么?

4

2 回答 2

9

我找到了。发条缪斯让我走上了这条道路。设置参数时,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();
    }
于 2013-07-16T19:56:40.257 回答
2

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

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

于 2021-02-17T07:01:19.050 回答