Java從db檔案中讀取InputStream獲取Image
阿新 • • 發佈:2019-01-01
package GetImage; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.Pane; import javafx.stage.Stage; import java.io.InputStream; import java.sql.*; public class GetImage extends Application { private static final String dbPath = "D:/Image_DBFile/"; private Connection connection; public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { Pane pane = new Pane(); ImageView imageView = new ImageView(getImageFromDB()); imageView.setFitWidth(200); imageView.setFitHeight(200); imageView.setX(0); imageView.setY(0); pane.getChildren().add(imageView); primaryStage.setScene(new Scene(pane)); primaryStage.show(); } private Image getImageFromDB(){ Image image = null; try { Class.forName("org.sqlite.JDBC"); connection = DriverManager.getConnection("jdbc:sqlite:" + dbPath + "MyImages.db"); String sql = "select ..."; PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery(); if(resultSet.next()){ InputStream inputStream = resultSet.getBinaryStream(Blob型別的Image的屬性索引,從1開始); image = new Image(inputStream); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return image; } }