shafeenスライマン:
私は最近、ブロブ画像を用いた画像のアップロードに取り組んでいたし、それが動作しますが、今、私は私が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」の試験データが、イメージを与え、データベースから読んでいる私の最初のフィールドを試してみまし確認するためには、ロードではなく、クラッシュ
任意の助けが理解されるであろうありがとう
エラー
James_D:
カーソルで(現在の行へのポインタ)ResultSet
最初の点の前に最初の行。next()
一方が存在する場合の方法は、に移動するより多くの行があるかどうかを示すブール値を返し、次の行に移動します。
あなたが投稿コードでは、呼び出すことはありませんrs.next()
あなたはidと画像を取得しようとするので、カーソルがどの行を指していない、と(私は思う)例外がスローされ、。
あなたは主キーと思われるもので検索しているので、あなたのケースでは、あなたは、ゼロまたは1つの行が返されることを期待しています。あなたのように、必要があります。
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();
if (rs.next()) {
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);
} else {
// no match found.... inform user, etc
}
} catch (Exception e) {
System.out.println("missingdata");
} finally {
try {
rs.close();
pst.close();
} catch (Exception e) {
}
}
}