java中的字符串长度问题

时间:2015-03-17 07:28:59

标签: java string stored-procedures

我从DB过程中获取数据,该过程在输出参数中返回XML。当我将此过程执行到DB时,它返回完整的XML,但是当我使用java执行它时,它只打印4000个字符。这是我的代码:

String sql = "{call SP_NAME(?)}";
try {
    CallableStatement stmt = DataAccess.databaseConnection
            .prepareCall(sql);
    stmt.registerOutParameter(1,java.sql.Types.VARCHAR);

    stmt.execute();
    String result=(String)stmt.getNString(1);               
    S.O.P(result);//Printing result
} catch (Exception e) {
    System.out.println(e);
}

这是什么原因?任何人都可以帮我找出问题吗?

4 个答案:

答案 0 :(得分:1)

您的存储过程中的返回值是如何定义的?有可能它被定义为varchar(4000)。如果是这样,你的问题就在那里。

如果情况并非如此,请查看数据结构的限制。

如果那不是问题,您是否尝试过调试sql server驱动程序返回的内容?

答案 1 :(得分:0)

您可以尝试将输出参数注册为CLOB类型

  

stmt.registerOutParameter(1,java.sql.Types.CLOB);

答案 2 :(得分:0)

为了解决这个问题,我在程序中使用了两个输出参数,两者都返回XML的结果,而在java方面我只是连接两者以获得完整的结果,这解决了我的问题,希望这会对某人有所帮助。谢谢大家。

答案 3 :(得分:0)

我解决了将Types.VARCHAR更改为Types.LONGNVARCHAR的问题:

//Set OUT parameter
stmt.registerOutParameter(1, Types.LONGNVARCHAR);

,而且我读到它可以使用Resultset来工作。

链接到另一个StackOverflow问题 {{3}}