关于预编译语句使用的注意事项

今天我在使用预编译语句发现了类似的错误。

Error Descript as blew:

[Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 3.

经测试发现,原来时查询的字段和从结果集中取的字段顺序不一致的原因。我的相关代码如下:

1、sql语句如下:

select top 20 a.status as status,asset_no,asset_desc,a.location_pkid as location_pkid,c.location_desc as location_desc,a.dept_pkid as dept_pkid,depart_desc,ip_address,mac_address from asset a join department b on a.dept_pkid=b.pkid join location c on a.location_pkid=c.pkid where a.site_pkid =1 and a.pkid not in (Select top 0 pkid from Asset order by a.pkid DESC) ORDER BY a.pkid DESC

2、取结果的代码如下:

   Asset asset=new Asset();
   asset.setStatus(rs.getInt("status"));
   asset.setAssetNo(rs.getString("asset_no"));
   asset.setLocationPkid(rs.getInt("location_pkid"));

    asset.setAssetDesc(rs.getString("asset_desc"));
   asset.setLocationDesc(rs.getString("location_desc"));
   asset.setDeptPkid(rs.getInt("dept_pkid"));
   asset.setDepartDesc(rs.getString("depart_desc"));
   asset.setIpAddress(rs.getString("ip_address"));
   asset.setMacAddress(rs.getString("mac_address"));
如上的写法就会报上边的错误,解决的办法是,取结果集的顺序和查询字段的顺序一致。

改正后的代码如下:

 Asset asset=new Asset();
   asset.setStatus(rs.getInt("status"));
   asset.setAssetNo(rs.getString("asset_no"));
   asset.setAssetDesc(rs.getString("asset_desc"));
   asset.setLocationPkid(rs.getInt("location_pkid"));
   asset.setLocationDesc(rs.getString("location_desc"));
   asset.setDeptPkid(rs.getInt("dept_pkid"));
   asset.setDepartDesc(rs.getString("depart_desc"));
   asset.setIpAddress(rs.getString("ip_address"));
   asset.setMacAddress(rs.getString("mac_address"));
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值