从UNKNOWN到UNKNOWN的转换不受支持

spr*_*boy 5 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 )
Run Code Online (Sandbox Code Playgroud)

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

Object [] params = {"1,2,3","d","2","","",1};

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

spr*_*boy 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();
    }
Run Code Online (Sandbox Code Playgroud)

  • 实际上,它可能是,它最终会自动装箱到它的 [对象表示](http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html),这只是没有t 恰好是 `String`。你最好在设置实际参数时转换它,因为这会让你更清楚你在做什么。另外,如果您需要索引,只需使用传统的 for 循环,不要这样混合。 (3认同)