解决ResultSet can not re-read row data for column问题

2009-4-9 20:26:49 已被阅读:1016 发表评论

在用JSP+sqlserver开发网站中遇到“ResultSet can not re-read row data for column 1”问题,在网上搜索得知,原来是微软公司的驱动的兼容性不太好。


有热心人总结了微软驱动的缺点:
(1)如果采用jdbc-odbc驱动,那么就必须按照查询顺序来一次读取(不论有没有image或text类型)
(2)如果采用微软提供的ms sql server jdbc driver,如果查询语句中,不存在image或text类型字段,那么可以按照无序获取
(3)如果采用微软提供的ms sql server jdbc driver,如果查询语句中,存在image或text类型字段,那么就必须按照顺序读取,否则就会报告Driver]ResultSet can not re-read row data for column之类的错误
(4)如果想不查询语句中有没有image或text类型字段,都可以不按照顺序获取,或重复获取。那么就必须更换驱动,改用第三方的。


解决方法:

下载JDTS驱动(支持SQL6.5,7.0,2000,2005,SYBASE) 下载地址:http://jtds.sourceforge.net/

下载解压后找到jtds-1.2.2.jar,放到 JSP项目 WEB-INF/lib目录下

数据库连接文件DbConn.java

package com.database;
import java.sql.*;

public class DbConn {

//private static String driverName ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
//private static String dbURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp";
//原来的连接,jsp是数据库文件 http://www.dwww.cn

private static String driverName ="net.sourceforge.jtds.jdbc.Driver";
private static String dbURL="jdbc:jtds:sqlserver://localhost:1433/jsp";

private String userName="dwww";
private String userPwd="dwww";
public Connection dbConn=null;


public synchronized Connection getConnection()
{
try
{
Class.forName(driverName).newInstance();
dbConn=DriverManager.getConnection(dbURL, userName, userPwd);
if(dbConn!=null)
return dbConn;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return null;
}


}

Ok,问题解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值