java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes
原因:
有字段类型设置成text. 并且该字段保存了NULL或者""(空字符),在jdbc中使用 getString("n_name");的时候就会出现此异常。 所以最好在该列设置默认值。保证有值。
注意:以上异常在使用MS SqlServer Driver 时候出现。 在使用jtds(http://jtds.sourceforge.net)时候不会出现。
出异常时的配置:
driverClassName = com.microsoft.jdbc.sqlserver.SQLServerDriver
url = jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=temp01
系统环境
jdk1.5
hibernate 3.0
sql server 2000
ms jdbc driver
将一个varchar类型的字段改为text后,就出现[Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes 的异常了。
从网上搜集资料来看,由于jdbc的bug,所以不能将一个"NULL"值和一个""(empty)存储在text类型的字段中。
解决办法:
1,可以在表结构中设置字段的默认值为" "(one char)。
2,修改配置为:
driverClassName=net.sourceforge.jtds.jdbc.Driver
url=jdbc:jtds:sqlserver://localhost:1433;DatabaseName=temp01;tds=8.0;lastupdatecount=true
我采用的是第二个方法,再运行程序,不再出现异常。
如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。