Получить изображение из БД Postgres и сохранить его в папке - PullRequest
0 голосов
/ 26 апреля 2018

В моем столбце таблицы базы данных postgres:

photograph bytea

Я хочу получить все изображения из базы данных и сохранить их в папке.

До сих пор я пробовал это и получал нолькаждый раз:

public class Test {

    public static void main(String[] argv) throws SQLException, IOException {

        System.out.println("-------- PostgreSQL "
                + "JDBC Connection Testing ------------");

        try {

            Class.forName("org.postgresql.Driver");

        } catch (ClassNotFoundException e) {

            System.out.println("Where is your PostgreSQL JDBC Driver? "
                    + "Include in your library path!");
            e.printStackTrace();
            return;

        }

        System.out.println("PostgreSQL JDBC Driver Registered!");

        Connection connection = null;

        try {

            connection = DriverManager.getConnection(
                    "jdbc:postgresql://127.0.0.1:5432/a?currentSchema=a", "postgres"
                                                + "",
                    "123456");

        } catch (SQLException e) {

            System.out.println("Connection Failed! Check output console");
            e.printStackTrace();
            return;

        }

        if (connection != null) {
            System.out.println("You made it, take control your database now!");
                        //start
                        String query = "SELECT photograph FROM a.c limit 10";
                        PreparedStatement pst = connection.prepareStatement(query);
                        ResultSet rs = pst.executeQuery();
                        while (rs.next()) {
                            System.out.println(rs.getString(1));
                            // convert byte array back to BufferedImage
                        if(null == rs.getString(1)){
                            continue;
                        }    
            InputStream in = new ByteArrayInputStream(rs.getString(1).getBytes());
            BufferedImage bImageFromConvert = ImageIO.read(in);
                        if(null == bImageFromConvert){
                            continue;
                        }
                        OutputStream out = new FileOutputStream("c:/"+"1"+".jpg");

            ImageIO.write(bImageFromConvert, "jpg", out);
                        }
                        //end


        } else {
            System.out.println("Failed to make connection!");
        }
    }

}

После отладки я получаю bImageFromConvert как ноль каждый раз.

Вкл. Системные данные печати выводятся на экран следующим образом:

\xffd8ffe000104a46494600010101004800480000ffe1174a4578696600004d4d002a00000008000d01000004000000010000102001..

Я вставил данные как private Byte[] photograph;

Как решить эту проблему ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...