我正在尝试在一些txt中设置信息。当所有列都已满时,我的代码很好,但是当一列为null时,会抛出异常,并且代码不会在try catch中运行。
我知道问题是空列,因为列PhotoQ
是用户的可选数据信息。因此,一种解决方案可能是在所有用户帐户中加载defaultPhoto,但将花费存储在数据库中。
对不起,我是新XD。
示例代码:
try {
PreparedStatement pstm = conn.prepareStatement(query);
pstm.setInt(1, userid);
pstm.setInt(2, quizzid);
pstm.setInt(3, NumQuest);
ResultSet rs =pstm.executeQuery();
while (rs.next()) {
fileBytes = rs.getBytes("PhotoQ");
ImageIcon image = new ImageIcon(fileBytes);
Image im = image.getImage();
Image myImg = im.getScaledInstance(lblImage.getWidth(), lblImage.getHeight(), Image.SCALE_SMOOTH);
ImageIcon newImage = new ImageIcon(myImg);
if (rs.getString("Optionsid").endsWith("1")) {
txtaA.setText(rs.getString("Options"));
txtaQuestion.setText(rs.getString("Question"));
if (rs.getInt("Valid")==1) {
ckbA.setSelected(true);
}
else {
ckbA.setSelected(false);
}
}
}
}
最佳答案
您的问题和错误似乎集中在null
和/或PhotoQ
列的Optionsid
值上。您应该对每列使用显式检查是否为空。仅当列不是null
时,才应尝试使用该值。
遵循这些思路,应该可以使您了解如何处理此问题:
while (rs.next()) {
fileBytes = rs.getBytes("PhotoQ");
if (fileBytes != null) {
ImageIcon image = new ImageIcon(fileBytes);
Image im = image.getImage();
Image myImg = im.getScaledInstance(lblImage.getWidth(), lblImage.getHeight(), Image.SCALE_SMOOTH);
ImageIcon newImage = new ImageIcon(myImg);
}
String optionsId = rs.getString("Optionsid");
if (optionsId != null && optionsId.endsWith("1")) {
txtaA.setText(rs.getString("Options"));
txtaQuestion.setText(rs.getString("Question"));
Integer valid = rs.getInt("Valid");
if (valid != null && valid.intValue() == 1) {
ckbA.setSelected(true);
} else {
ckbA.setSelected(false);
}
}
}