Я недавно работал над загрузкой изображений с использованием изображений BLOB-объектов, и это работает, но теперь, когда я пытаюсь найти определенного человека c в поиске, он не отображается, я пытался преобразовать изображение BLOB-объекта в байт и отобразить в поле изображения в java fx форме
это мой код
@FXML
private void handleSearchResults(KeyEvent event) throws IOException {
try {
String sql = "select * from Staff_information where id=? ";
pst = conn.prepareStatement(sql);
pst.setString(1, txtSearch.getText());
rs = pst.executeQuery();
String add1 = rs.getString("id");
txtid.setText(add1);
byte[] img = rs.getBytes("Image");
BufferedImage bufferedImage = ImageIO.read(img);
WritableImage image = SwingFXUtils.toFXImage(bufferedImage, null);
imageDisplay.setImage(image);
imageDisplay.setFitWidth(200);
imageDisplay.setFitHeight(200);
} catch (Exception e) {
System.out.println("missingdata");
} finally {
try {
rs.close();
pst.close();
} catch (Exception e) {
}
}
}
Это мой код для загрузки файла, который работает
Загрузка файла
@FXML
private void UploadImageActionPerformed(ActionEvent event) {
FileChooser fileChooser = new FileChooser();
//Set extension filter
FileChooser.ExtensionFilter extFilterJPG
= new FileChooser.ExtensionFilter("JPG files (*.JPG)", "*.JPG");
FileChooser.ExtensionFilter extFilterjpg
= new FileChooser.ExtensionFilter("jpg files (*.jpg)", "*.jpg");
FileChooser.ExtensionFilter extFilterPNG
= new FileChooser.ExtensionFilter("PNG files (*.PNG)", "*.PNG");
FileChooser.ExtensionFilter extFilterpng
= new FileChooser.ExtensionFilter("png files (*.png)", "*.png");
fileChooser.getExtensionFilters()
.addAll(extFilterJPG, extFilterjpg, extFilterPNG, extFilterpng);
//Show open file dialog
File file = fileChooser.showOpenDialog(null);
try {
BufferedImage bufferedImage = ImageIO.read(file);
WritableImage image = SwingFXUtils.toFXImage(bufferedImage, null);
img.setImage(image);
img.setFitWidth(200);
img.setFitHeight(200);
img.scaleXProperty();
img.scaleYProperty();
img.setSmooth(true);
img.setCache(true);
FileInputStream fin = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for (int readNum; (readNum = fin.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
}
person_image = bos.toByteArray();
} catch (IOException ex) {
Logger.getLogger("ss");
}
}
byte[] person_image = null;
@FXML
private void handleaddemployee(ActionEvent event) throws IOException {
try {
String empID = "nill";
if (!txtempID.getText().equals("")) {
empID = txtempID.getText();
}
Employee e = new Employee(
empID,
person_image
);
dbemployee.addEmployee(e);
} else {
System.out.println("not working");
}
} catch (SQLException ex) {
System.out.println("error");
} catch (NumberFormatException e) {
System.out.println("number error");
}
}
, чтобы проверить, что я попробовал свое первое поле, которое считывает данные из базы данных, что дает результаты теста "2", но изображение для сотрудника "2" не загружается и не падает
любая помощь будет оценена спасибо
Ошибка
Ошибка