我在我的项目中有一个方法如下:
public String fillsubject(String id,int type){
if(id.isEmpty())
return "";
String result="";
String query="select sub_name from subject where sub_id='"+id+"'";
if(type==1)
query="select lab_name from lab where lab_id='"+id+"'";
try {
ResultSet rs2=st2.executeQuery(query);
rs2.first();
result=rs2.getString(1);
rs2.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex);
}
return result;
}
我是这样称呼它的。。
try {
rs = st.executeQuery("Select sub1,sub2,sub3,sub4,sub5,sub6,sub7,lab1,lab2,lab3,class_id from class where standard='" + jComboBox32.getSelectedItem().toString() + "' and section='" + jComboBox26.getSelectedItem().toString() + "';");
rs.first();
jTextField39.setText(fillsubject(rs.getString(1),0));
jTextField32.setText(fillsubject(rs.getString(2),0));
jTextField33.setText(fillsubject(rs.getString(3),0));
jTextField40.setText(fillsubject(rs.getString(4),0));
jTextField35.setText(fillsubject(rs.getString(5),0));
jTextField41.setText(fillsubject(rs.getString(6),0));
jTextField38.setText(fillsubject(rs.getString(7),0));
jTextField37.setText(fillsubject(rs.getString(8),1));
jTextField34.setText(fillsubject(rs.getString(9),1));
jTextField36.setText(fillsubject(rs.getString(10),1));
jLabel198.setText(rs.getString(11));
} catch (SQLException e) {
JOptionPane.showMessageDialog(DeleteStudent, e);
}
问题是在调用rs.getstring()时,它有时在数据库中有空值。在这种情况下,fillsubject()方法中会出现nullpointer异常。现在我的问题是如何解决这个问题。提前谢谢。
4条答案
按热度按时间jucafojl1#
我认为处理这个问题的最好方法是对结果集运行if语句,然后根据您认为适合您的应用程序的情况处理结果。前任:
我希望这是有道理的。
k2arahey2#
用你的方法
fillsubject()
,而不是使用:用途:
这样,您将检查id string对象是否
null
在尝试访问它之前。另外,为了补充信息,在建议的if子句中,
id.isEmpty()
仅当第一个比较结果为false时(仅当id不为null时)才会执行。当id为空时,id.isEmpty()
永远不会被处决。k10s72fa3#
你可以随时检查
String
退回人getString
是null
你自己。一般来说,您可以使用
wasNull()
方法来检查最后一个“get”方法是否表示null
. 在获取其他数据类型(如int
不代表null
.报告最后读取的列的值是否为sql null。请注意,必须首先调用列上的一个getter方法来尝试读取其值,然后调用wasnull方法来查看读取的值是否为sqlnull。
cfh9epnr4#
在方法的开头,添加: