我在SQL中有一个名为images的表,包含3列,imageID,用户名和图像。我试图将特定用户的所有图片都放到一个阵列中但由于某种原因它无法正常工作。我不知道我做错了什么。图像进入listOfImages数组,图像名称进入imageName数组:
ArrayList<BufferedImage> listOfImages = new ArrayList<BufferedImage>();
ArrayList<String> imageName = new ArrayList<String>();
try {
myConn = connection
String sql = "SELECT * FROM images WHERE username=?";
PreparedStatement statement = myConn.prepareStatement(sql);
statement.setString(1, username);
ResultSet result = statement.executeQuery();
while (result.next()) {
String getImageName = result.getString("imageID");
Blob blob = result.getBlob("image");
listOfImages.add(javax.imageio.ImageIO.read(blob.getBinaryStream()));
imageName.add(getImageName);
}
myConn.close();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println(imageName);
错误讯息:
Stack trace:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
listOfImages.add( javax.imageio.ImageIO.read( blob.getBinaryStream() ) );
问题是我错误地将blob转换为缓冲图像。这样做的正确方法是什么?
答案 0 :(得分:0)
已解决:我在SQL数据库中的blob条目中有空值。在阅读时会导致错误。