ibatis 链接MSSQL2008 的一些问题总结

首先给出链接MSSQLSERVER2008的三种方式: 
 

第一种,使用mssql.jar 包,链接代码如下:

driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=dbname
username=***
password=***


第二种,使用sqljdbc4.jar包,链接代码如下:

driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=dbname;integratedSecurity=true;
username_from=***
password_from=***

注意:第一种和第二种在驱动名称有些不同,请大家注意下!

第三种,使用jdts.jar包,链接代码如下:

driverClassNamem=net.sourceforge.jtds.jdbc.Driver
url=jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=dbname;useLOBs=false;
username=***
password=***

我想以上三种就是大家一般链接mssq 数据的方法啦!

下面我讲解下我使用中遇到的一些问题,有些问题解决了,有些莫有。

1.但我是使用第一种的时候,也就是mssql.jar 包,这里会遇到一个问题,那就是如果字段类型是text,varchar(max)类型的时候,如果字段的值为null或者“”空字符串,在执行查询操作的时候就会报错:java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]Underlying input stream returned zero bytes ;这样的错误,这个是mssql.jar 包的bug,一般大家搜索的时候大家都会推荐使用第三种方法也就是jdts.jar包,所以不推荐使用第一种方法连库。

2.上面我们说,如果遇见字段类型是text,varchar(max)类型的时候,而且字段的值为null或者“”空字符串时,就需要我们使用jdts.jar包,但是今天我使用这个包的时候也出现了问题,当字段类型是text,varchar(max)类型的时候,而且字段的值为null或者“”空字符串时的查询的时候确没有报错,插入也没有错误,但是如果有值时,ibatis却报了java.lang.NullPointerException,这个错误,查了半天才找到原因,可能是ibaits 使用查询的时候返回的类型是 net.sourceforge.jtds.jdbc.ClobImpl,这个类型,可能是ibiatis 在插入的时候无法转换造成了空指针异常的错误,解决办法就是在链接字符串的时候加入 ;useLOBs=false,上面的链接中我已经加入了,这个参数的目的是,将 net.sourceforge.jtds.jdbc.ClobImpl对象转成字符串放入内存中然后插入,这样问题就解决了,不知道大家遇到过莫有!

3.最后,在ibatis中使用sqljdbc4.jar包连裤,使用这个jar,就不会遇见1,2上面这样的情况,不过这里我也遇到了很多问题,一会是安全错误,安全错误只要在链接字符串后面添加integratedSecurity=true就可以啦!一会是缺少sqljdbc_auth.dll文件,要不就是出先下面异常 java.lang.SecurityException: class "com.microsoft.sqlserver.jdbc.ISQLServerPreparedStatement$$FastClassByProxool$$49d74c1"'s signer information does not match signer information of other classes in the same package,这个错误好像是Jar包的前面冲突,只需要把jar里面META-INF目录下在三个文件删除就不会出现前面冲突啦!

以上就是我遇见的问题!请大家是情况使用!


 

你可能感兴趣的:(jdbc,ibatis,异常,MSSQL2008,sqljdbc4)