問題1:JDBC Sql Server varchar的取出最大長度限制
環境: JDBC驅動inet tds驅動(版本不明),SQLServer2K
問題癥狀:對于數據庫聲明為varchar的長度大于256的字段,可以正常保存,但是無法取出多于256字符以后的內容
問題2:使用Hibernate映射時0長度字符串保存后,取出多加了一個空格
環境:inet tds驅動Hibernate2.1.8,SQL Server2K
問題癥狀:保存0長度字符串后,取出增加了多余的空格。
以上兩個問題都是因為沒有使用最新的通訊協議引起的,修改URL聲明方式如下:
jdbc:inetdae7:127.0.0.1:1433?database=xxx
問題解決,收工。
ps:發現協議inetdae時,數據庫字段為Null時,Hibernate取出聲明為基本類型(例如boolean)的對象屬性并不會報錯,實際上在其他數據庫如Oracle和新協議上是會報錯的。為了避免此類問題出現,最好還是嚴格遵守:Hibernate聲明對象的基本類型屬性,一定不能在數據庫端置為空值。
ps2:在解決以上問題中發現,Oracle居然對傳人0長度字符串,會轉為空值,不知道是為了節省空間還是別的什么理由。-_-!!!
(全文完)