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