代码如下:public List getAll(){
List list = new ArrayList();
Entity user = null;
ResultSet rs = null;
cn = DbManager.cn();
pstm = DbManager.pstm(cn, "select user_name from userinfo");
try {
rs = pstm.executeQuery();
while(rs.next()){
user.setUserName(rs.getString("user_name"));
list.add(user);
}
} catch (SQLException e) {

e.printStackTrace();
}finally{
DbManager.closeCn(cn, pstm);
DbManager.closeRs(rs);
}
return list;
}

public static void main(String[] arg){
Entity user = new Entity();
DaoIpl dao = new DaoIpl();
List list = new ArrayList();
list = dao.getAll(); // 报空指针在这一行,不知道为什么
try {
int i = 0;
for (i=0;i<=list.size();i++){
user = (Entity)list.get(i);

System.out.println(user.getUserName());
}

} catch (Exception e) {
e.printStackTrace();
}

//System.out.println(dao.selectUser(user));

}
另外,再向大虾请教下 接口到底起什么作用,为什么不直接用实现的类呢?

解决方案 »

  1.   

    finally{
    DbManager.closeCn(cn, pstm);
    DbManager.closeRs(rs);
    你这地方关的也不对啊,应该先关掉Resutset,然后是preparedstatement,最后是connection,
    按照你的写法应该会报异常的,说什么rs已经关闭。
      

  2.   

    上面都已经回答了。
    接口可以实现多个,而继承只能有一个。  最常见的 Runnable 和 Thread 当你的类已经继承了一个父类时,如果要实现线程 只能 implements Runnable。
    空指针也如上面说的 可能是你回收数据库资源的顺序导致。
      

  3.   

    异常贴出来,DaoIpl该类也贴出来看看