Java:[SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes

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
我采用的是第二个方法,再运行程序,不再出现异常。

 


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。