代码如下: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));
}
另外,再向大虾请教下 接口到底起什么作用,为什么不直接用实现的类呢?
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));
}
另外,再向大虾请教下 接口到底起什么作用,为什么不直接用实现的类呢?
DbManager.closeCn(cn, pstm);
DbManager.closeRs(rs);
你这地方关的也不对啊,应该先关掉Resutset,然后是preparedstatement,最后是connection,
按照你的写法应该会报异常的,说什么rs已经关闭。
接口可以实现多个,而继承只能有一个。 最常见的 Runnable 和 Thread 当你的类已经继承了一个父类时,如果要实现线程 只能 implements Runnable。
空指针也如上面说的 可能是你回收数据库资源的顺序导致。