如何从Java将结构数据类型传递给MS SQL数据库

时间:2012-09-27 06:44:48

标签: c# java sql sql-server java-ee

我正在尝试调用一个参数为sqlstructure类型的MS SQL的存储过程。我已经通过String[] array但是它抛出了这个异常

WARNING: #{reportingCharts.getGraphValuesOnLocationBasis}: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [{CALL dbo.up_Chart_SelectPersonCountByRankLocation(?,?,?,?,?)}]; SQL state [null]; error code [0]; The conversion from UNKNOWN to UNKNOWN is unsupported.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: The conversion from UNKNOWN to UNKNOWN is unsupported.
javax.faces.FacesException: #{reportingCharts.getGraphValuesOnLocationBasis}: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [{CALL dbo.up_Chart_SelectPersonCountByRankLocation(?,?,?,?,?)}]; SQL state [null]; error code [0]; The conversion from UNKNOWN to UNKNOWN is unsupported.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: The conversion from UNKNOWN to UNKNOWN is unsupported.

所以我认为它不接受array作为结构的参数。
不幸的是我无处可以找到一个关于如何在java中使用它的例子。
我怎么能通过我的这个存储过程的数组/列表?或者什么是java中的c#SqlDbType.Structured的替代?

1 个答案:

答案 0 :(得分:1)

请参阅Microsoft JDBC Driver Team Blog,TVP支持的JDBC驱动程序尚未发布。有一种解决方法:以二进制形式打包值,在服务器上将其破解并将其传递给表值函数。对于JDBC驱动程序,此参数必须作为二进制传递 请参阅this link,您将找到java的所有MSsql数据类型。