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所指向的第一个都是从真正的数据开始吗?我第一次用Oracleoraclejavasql数据next
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所指向的第一个都是从真正的数据开始吗?我第一次用Oracleoraclejavasql数据next
解决方案 »
- oracle大数据量的分页怎么做比较好
- 请高手指点如何写比较效率的分类汇总语句
- 急急急 包失效
- 有2个数据库A、B;分布在不同的地点;当在A数据库进行事务处理时,数据能够自动流向B数据库的实现技术。
- 急啊!!!误删除记录,如何回滚?????
- oracle9i Rman数据恢复问题
- 如何利用 NT 用户访问位于 LINUX 平台上的数据库?
- 如何用Java写一个向Oracle中的数据表插入自动生成测试数据的类?
- 出现错误Ora-04030,应该如何解决?
- 高分求解!!Oracle字符问题!!!
- 大神求救啊!!快来帮帮,一个关于Oracle批量插数据的问题
- server process和session和cursor
你只查询出一条记录试试看。
它执行query的源码是这样的
public Object doInStatement(Statement stmt) throws SQLException {
/* <-MISALIGNED-> *//* 441*/ResultSet rs = null;
Object obj;
/* <-MISALIGNED-> *//* 443*/try {
/* <-MISALIGNED-> *//* 443*/rs = stmt.executeQuery(sql);
/* <-MISALIGNED-> *//* 444*/ResultSet rsToUse = rs;
/* <-MISALIGNED-> *//* 445*/if (nativeJdbcExtractor != null)
/* <-MISALIGNED-> *//* 446*/rsToUse = nativeJdbcExtractor
.getNativeResultSet(rs);
/* <-MISALIGNED-> *//* 448*/obj = rse
.extractData(rsToUse);
}
/* <-MISALIGNED-> *//* 451*/finally {
/* <-MISALIGNED-> *//* 451*/JdbcUtils.closeResultSet(rs);
}
/* <-MISALIGNED-> *//* 448*/return obj;
我不知道在调用这个nativeJdbcExtractor.getNativeResultSet(rs)的时候,内部的实现有没有进行next,不过如果不进行next是肯定可以查询到第一条数据的,难不成每次都要进行一次第一条查询,再进行next?
你可以使用ResultSet的isBeforeFirst(),isFirst(),getRow()方法去判断是否已经执行过next了。
如果确实是已经执行过next了,那么你可以改成:
do{...}while(rs.next());