jTDS错误地报告结果集元数据中的数据类型信息(对于DATE列,报告NVARCHAR)

时间:2012-05-08 17:46:00

标签: sql-server-2008 jdbc jtds database-metadata

目前,针对Microsoft SQL Server 2008的jTDS JDBC驱动程序(1.2.5)似乎错误地将DATE列的数据类型报告为NVARCHAR。

对于早期版本的jTDS和SQL Server(2005,2000)

,它的行为可能相同
  • 是否有任何变通方法可以不需要切换到不同的驱动程序(例如Microsoft自己的驱动程序)或修补jTDS驱动程序?

  • 另外,我想避免对数据字典(INFORMATION_SCHEMA.COLUMNS视图等)执行查询以查找数据类型信息(并且可能针对“”的输出进行交叉引用exec sp_datatype_info “以便检索SQL数据类型”

快速阅读jTDS未解决的错误并不表明这是否会被修复。

这个问题的答案:JDBC - JTDS bug ? For columns of type date and time(x)似乎表明在SQL Server 2005中不会发生这种情况。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我找到了条件

的解决方案

metaData.getColumnType(columnNumber) == 12

如果满足此条件,请执行查询

SELECT System_Type_Id FROM Sys.Columns WHERE Name = [column name] AND Object_Id = (SELECT Object_Id FROM Sys.Tables WHERE Name = [table name])

对于smalldatetime,它将返回58

并且对于datetime,它将返回61