【问题标题】:How pass structure datatype to MS SQL database from Java如何将结构数据类型从 Java 传递到 MS SQL 数据库
【发布时间】:2012-09-27 06:44:47
【问题描述】:

我正在尝试调用一个存储过程,其一个参数是 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的替代品是什么?

【问题讨论】:

  • 我不是 Java 程序员,但也许这会有所帮助:JDBC 具有单独的 ARRAY (java.sql.Array) 和 STRUCT (java.sql.Struct) 数据类型。另一方面 - 我不确定 SQL Server 是否可以接受来自 JDBC 的结构。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2019-06-15
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2020-08-05
    相关资源
    最近更新 更多