2012-05-08 34 views
2

目前,針對Microsoft SQL Server 2008的jTDS JDBC驅動程序(1.2.5)似乎錯誤地將DATE列的數據類型報告爲NVARCHAR。jTDS錯誤地報告結果集元數據中的數據類型信息(針對DATE列,報告NVARCHAR)

它可能表現爲兩種早期版本JTDS和SQL Server(2005年,2000年)

  • 是否有這個不需要切換到不同的驅動程序(例如微軟的任何變通辦法相同自己的驅動程序)或修補jTDS驅動程序?

  • 此外,我想避免不必執行對數據字典(INFORMATION_SCHEMA.COLUMNS視圖等)來查找數據類型信息的查詢(和可能的交叉引用對的「EXEC輸出sp_datatype_info 「以檢索SQL數據類型)

對jTDS突出錯誤的快速瀏覽並不表明這是否將被修復。

回答這個問題:JDBC - JTDS bug ? For columns of type date and time(x)似乎表明,這並不在SQL Server提前出現2005年

感謝。

+0

+1我也有同樣的問題。任何解決方案? –

回答

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

+1

有趣的發現。不幸的是,如果存在需要10個字節存儲的VARCHAR(或NVCHARCHAR),則上述條件也將評估爲true(對於VARCHAR列,getPrecision()將返回存儲字節數與getColumnDisplaySize(),這將返回長度)。 – SuperPomodoro

+0

http://techierg.blogspot.com/2014/05/jtds-is-returns-nvarchar-for-datetime.html –