日期:2014-05-20  浏览次数:21092 次

分页时候出现空指针错误
我在分页从数据库取数据的时候出现空指针错误,初步定位是sql语句搞的鬼,调用方法是,打印pageNo能打印具体的数值,但当它出现在sql语句中时侯就无法取出数据,sql语句中用具体数值是能取出来的,哪位高手帮我看看,代码如下:

public List<Product> getProducts(int pageNo, int pageSize) {
    Connection conn=null;
ResultSet rs=null;
List<Product> list=new ArrayList<Product>();
try {
conn=DB.getConn();
System.out.println(pageNo);
String sql="select * from product"+pageNo+","+pageSize;             rs=DB.executeQuery(conn,sql);
            while(rs.next()){
            Product p=new Product();             
p.setId(rs.getInt("id"));
p.setName(rs.getString("name"));
p.setDescr(rs.getString("descr"));
p.setNormalPrice(rs.getDouble("normalPrice"));
p.setMemberPrice(rs.getDouble("memberprice"));
p.setPdate(rs.getTimestamp("Pdate"));
p.setCategoryId(rs.getInt("categoryId"));
list.add(p);
            }
} catch (SQLException e){ 
e.printStackTrace();
} finally {
DB.closeRs(rs);
DB.closeConn(conn);
}
return list;
}

------解决方案--------------------
你代码里的rs一直为null啊,需要按照如下的方法对rs进行赋值才行:

Statement stmt = conn.createStatement();  
// 执行SQL语句,返回结果集  
ResultSet rs = stmt.executeQuery("SELECT * FROM XXX");  
------解决方案--------------------
1、你这是什么数据库啊,感觉你这sql语句看不懂啊。难道这sql语法也可以。
select * from product1,2
2、你的sql语句根本没有执行,你的rs对象肯定一直都为null啊。
------解决方案--------------------
我估计你的事mysql数据库,要实现分页你是不是应该在前面加上limit
sql="select * from product limit "+pageNo+","+pageSize;试试!