日期:2014-05-17  浏览次数:20872 次

Oracle的ResultSet循环出现问题
public List<Product> getProductsByKeys(String keys){
final ArrayList<Product> products = new ArrayList<Product>();
String sql = "select * from product where name like '%"+keys+"%'";
System.out.println("sql:"+sql);
this.query(sql, new RowCallbackHandler() {

@Override
public void processRow(ResultSet rs) throws SQLException{
Product product = null;
while (rs.next()) {
product = new Product();
product.setId(rs.getString("id"));
product.setName(rs.getString("name"));
product.setPrice(rs.getString("price"));
System.out.println(product);
products.add(product);
}
}
});
return products;
}

上面的始终取不到第一个结果,所有的都是从第二个开始,Oracle的ResultSet所指向的第一个都是从真正的数据开始吗?我第一次用Oracle
oracle java sql 数据 next

------解决方案--------------------
使用JDBC是没有问题的,你用别人的框架得看它的文档说明。
你可以使用ResultSet的isBeforeFirst(),isFirst(),getRow()方法去判断是否已经执行过next了。
如果确实是已经执行过next了,那么你可以改成:
do{...}while(rs.next());