
java.lang.NullPointerException错误,急求解决!!!!
privatevoidUpdateMouseClicked(java.awt.event.MouseEventevt){intbox=this.Box.getSelect...
private void UpdateMouseClicked(java.awt.event.MouseEvent evt) {
int box = this.Box.getSelectedIndex();
String find = this.txtfind.getText().trim();
int i = 0;
SwapPack sp = new SwapPack();
SwapSQL sql = new SwapSQL();
switch(box){
case 0:break;
case 1:sql.GetRomeveByNo(find);break;
case 2:sql.GetRomeveByName(find);break;
default:break;
}
try{
List gather = sp.getList();
Iterator it = null;
for(it = gather.iterator();it.hasNext();){
SwapPack spit = (SwapPack)it.next();
int j = 0;
table.setValueAt(spit.getDate(),i,j);
table.setValueAt(spit.getNo(),i,j+1);
table.setValueAt(spit.getName(),i,j+2);
table.setValueAt(spit.getOun(),i,j+3);
table.setValueAt(spit.getOpost(),i,j+4);
table.setValueAt(spit.getNun(),i,j+5);
table.setValueAt(spit.getNcn(),i,j+6);
table.setValueAt(spit.getNpost(),i,j+7);
table.setValueAt(spit.getCs(),i,j+8);
i++;
}}catch(Exception e){Logger.getLogger(Swap.class.getName()).log(Level.SEVERE, null, e);}}
连接数据库代码:
public SwapPack GetRomeveByName(String name){
SwapPack sp = null;
sql = "select * from swap where Name=?";
try {
PreparedStatement ps = getPrepareStatement(sql);
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
ArrayList list = new ArrayList();
while(rs.next()){
sp = new SwapPack();
sp.setDate(rs.getString("Date"));
sp.setNo(rs.getString("No"));
sp.setName(rs.getString("Name"));
sp.setOun(rs.getString("Oun"));
sp.setOpost(rs.getString("Opost"));
sp.setNun(rs.getString("Nun"));
sp.setNcn(rs.getString("Ncn"));
sp.setNpost(rs.getString("Npost"));
sp.setCs(rs.getString("Cs"));
list.add(sp);
}
sp.setList(list);
return sp;
} catch (SQLException ex) {
Logger.getLogger(SwapSQL.class.getName()).log(Level.SEVERE, null, ex);
return sp;
}
} 展开
int box = this.Box.getSelectedIndex();
String find = this.txtfind.getText().trim();
int i = 0;
SwapPack sp = new SwapPack();
SwapSQL sql = new SwapSQL();
switch(box){
case 0:break;
case 1:sql.GetRomeveByNo(find);break;
case 2:sql.GetRomeveByName(find);break;
default:break;
}
try{
List gather = sp.getList();
Iterator it = null;
for(it = gather.iterator();it.hasNext();){
SwapPack spit = (SwapPack)it.next();
int j = 0;
table.setValueAt(spit.getDate(),i,j);
table.setValueAt(spit.getNo(),i,j+1);
table.setValueAt(spit.getName(),i,j+2);
table.setValueAt(spit.getOun(),i,j+3);
table.setValueAt(spit.getOpost(),i,j+4);
table.setValueAt(spit.getNun(),i,j+5);
table.setValueAt(spit.getNcn(),i,j+6);
table.setValueAt(spit.getNpost(),i,j+7);
table.setValueAt(spit.getCs(),i,j+8);
i++;
}}catch(Exception e){Logger.getLogger(Swap.class.getName()).log(Level.SEVERE, null, e);}}
连接数据库代码:
public SwapPack GetRomeveByName(String name){
SwapPack sp = null;
sql = "select * from swap where Name=?";
try {
PreparedStatement ps = getPrepareStatement(sql);
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
ArrayList list = new ArrayList();
while(rs.next()){
sp = new SwapPack();
sp.setDate(rs.getString("Date"));
sp.setNo(rs.getString("No"));
sp.setName(rs.getString("Name"));
sp.setOun(rs.getString("Oun"));
sp.setOpost(rs.getString("Opost"));
sp.setNun(rs.getString("Nun"));
sp.setNcn(rs.getString("Ncn"));
sp.setNpost(rs.getString("Npost"));
sp.setCs(rs.getString("Cs"));
list.add(sp);
}
sp.setList(list);
return sp;
} catch (SQLException ex) {
Logger.getLogger(SwapSQL.class.getName()).log(Level.SEVERE, null, ex);
return sp;
}
} 展开
2个回答
展开全部
while(rs.next()){
sp = new SwapPack();
sp.setDate(rs.getString("Date"));
sp.setNo(rs.getString("No"));
sp.setName(rs.getString("Name"));
sp.setOun(rs.getString("Oun"));
sp.setOpost(rs.getString("Opost"));
sp.setNun(rs.getString("Nun"));
sp.setNcn(rs.getString("Ncn"));
sp.setNpost(rs.getString("Npost"));
sp.setCs(rs.getString("Cs"));
list.add(sp);
}
sp.setList(list); //这个地方的问题,如果查询的结果为空,就无法进入while循环,也就无法对sp进行初始话。应该修改这一句移到括号的上面。如下:
while(rs.next()){
sp = new SwapPack();
sp.setDate(rs.getString("Date"));
sp.setNo(rs.getString("No"));
sp.setName(rs.getString("Name"));
sp.setOun(rs.getString("Oun"));
sp.setOpost(rs.getString("Opost"));
sp.setNun(rs.getString("Nun"));
sp.setNcn(rs.getString("Ncn"));
sp.setNpost(rs.getString("Npost"));
sp.setCs(rs.getString("Cs"));
list.add(sp);
sp.setList(list); //<----移到这儿,可以fix该问题。
}
sp = new SwapPack();
sp.setDate(rs.getString("Date"));
sp.setNo(rs.getString("No"));
sp.setName(rs.getString("Name"));
sp.setOun(rs.getString("Oun"));
sp.setOpost(rs.getString("Opost"));
sp.setNun(rs.getString("Nun"));
sp.setNcn(rs.getString("Ncn"));
sp.setNpost(rs.getString("Npost"));
sp.setCs(rs.getString("Cs"));
list.add(sp);
}
sp.setList(list); //这个地方的问题,如果查询的结果为空,就无法进入while循环,也就无法对sp进行初始话。应该修改这一句移到括号的上面。如下:
while(rs.next()){
sp = new SwapPack();
sp.setDate(rs.getString("Date"));
sp.setNo(rs.getString("No"));
sp.setName(rs.getString("Name"));
sp.setOun(rs.getString("Oun"));
sp.setOpost(rs.getString("Opost"));
sp.setNun(rs.getString("Nun"));
sp.setNcn(rs.getString("Ncn"));
sp.setNpost(rs.getString("Npost"));
sp.setCs(rs.getString("Cs"));
list.add(sp);
sp.setList(list); //<----移到这儿,可以fix该问题。
}
追问
不行的,因为这个方法我在其他类中有用过的,都没问题,能正确查询出数据,即使数据库没有相应数据也不会出现这样的错误,听说是有指针为空。 for(it = gather.iterator();it.hasNext();){
这句好像有问题,但是我不知道是什么问题,从没遇到过这样的问题,连接数据库的方法应该是没错的。
追答
你可以用debug,单步的调试,这样就能够确定到底是哪儿的空指针了。
另外,我上面指出的地方也确实是一个问题,需要仔细检查一下,在别的地方正确不等于在这儿也正确。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询