gpt4 book ai didi

Java/MySQL 结果集中途出现空指针异常

转载 作者:行者123 更新时间:2023-11-29 12:13:52 24 4
gpt4 key购买 nike

我在公司内使用了一个基于 Java 的 epos 系统,目前正在编写一系列用于后台/仓库的 Java 应用程序。我当前项目的目的是从 MYSQL 中提取图像(保存为 blob)和标题(varchar 值),并将它们显示在 JPanel 内的 JLabels 上。

首先,sql 查询在名为 DataLogic 的类中处理,如下所示:

public class DataLogic {

MySQLConnect mysqlConnect = new MySQLConnect();
private Connection connect = null;
private PreparedStatement preparedStatement = null;

public ResultSet getCategories(){
try {
connect = mysqlConnect.connDatabase();
preparedStatement = connect.prepareStatement("SELECT image, name, texttip from CATEGORIES ORDER BY name");
ResultSet resultSet = preparedStatement.executeQuery();
return resultSet;
} catch (Exception e){
}
return null;
}

}

正如您所看到的,get Category 函数返回一个 ResultSet,该结果集在名为 GuiEvents 的类的 populateCats() 函数中使用,相关部分如下:

public void populateCats(){
results = dataLogic.getCategories();
try{
int count = 0;
while (results.next()) {
++count; // Get data from the current row and use it
}
results.first();
while (results.next()){
GridLayout catLayout = new GridLayout(count,2);
System.out.println(count);
gui.catList.setLayout(catLayout);
JLabel catLabel = new JLabel(results.getString(2));
JLabel imgLabel = new JLabel();
imgLabel.setIcon(displayImage(results.getBytes(1)));
gui.catList.add(imgLabel);
gui.catList.add(catLabel);
}
} catch (Exception e) {
e.printStackTrace();
}
}

public ImageIcon displayImage(byte[] bytes) {
Image img = Toolkit.getDefaultToolkit().createImage(bytes);

// new code
int imgHeight = img.getHeight(null);
int imgWidth = img.getWidth(null);
int newHeight = imgHeight / 2;
int newWidth = imgWidth / 2;
//System.out.println(imgHeight + "," + imgWidth);
Image resizedImg = img.getScaledInstance(40,40,Image.SCALE_SMOOTH );
//end new code

ImageIcon icon = new ImageIcon(resizedImg);
return icon;
}

我的问题是,虽然它编译并运行,但我在 netbeans 中收到以下错误:

java.lang.NullPointerException
at java.awt.Toolkit.createImage(Toolkit.java:1111)
at gapricing.app.first.GuiEvents.displayImage(GuiEvents.java:48)
at gapricing.app.first.GuiEvents.populateCats(GuiEvents.java:39)
at gapricing.app.first.Gui.<init>(Gui.java:111)
at gapricing.app.first.Main.main(Main.java:6)

虽然 29 个图像和标题完全按照我希望的方式显示,但剩下的 9 个却没有,尽管由于网格布局,JPanel 的底部包含了 9 个空框。有人可以帮忙吗??

最佳答案

谢谢大家,是的,数据库中缺少图像。
简单编辑:

if (results.getBytes(1) != null){
imgLabel.setIcon(displayImage(results.getBytes(1)));
}

如果字节为空,则仅显示空标签。非常感谢

关于Java/MySQL 结果集中途出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com