Результирующее множество закрытое исключение при попытке прочитать pdf-файл из таблицы sqlite - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь прочитать файл PDF, который был сохранен в таблице базы данных SQLite.когда я запускаю код, он говорит: «Resultset is closed».

public void syllabusAttach(){
    String selectSQL = "SELECT Image_Reg FROM "+getRegulation()+" WHERE SubjectCode="+getSubCode()+"";
    ResultSet rs = null;
    FileOutputStream fos = null;
    Connection conn = null;
    Statement stmt = null;

    try {
        conn = connect();
        stmt = conn.createStatement();

        rs = stmt.executeQuery(selectSQL);

        // write binary stream into file

            InputStream is =rs.getBinaryStream("Image_Reg");
            File file = new File("syllabus_"+getRegulation()+".pdf");
            OutputStream os = new FileOutputStream(file);
            System.out.println("Writing BLOB to file " + file.getAbsolutePath());
            byte[] content = new byte[1024];
            int size = 0;
            while((size = is.read(content)) !=-1){
                os.write(content,0,size);
            }



    } catch (SQLException | IOException e) {
        System.out.println(e.getMessage());
    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }

            if (conn != null) {
                conn.close();
            }
            if (fos != null) {
                fos.close();
            }

        } catch (SQLException | IOException e) {
            System.out.println(e.getMessage());
        }
    }

}


write binary stream into file
            File file = new File("syllabus_"+getRegulation()+".pdf");
            fos = new FileOutputStream(file);

        System.out.println("Writing BLOB to file " + file.getAbsolutePath());
        while (rs.next()) {
            InputStream input = rs.getBinaryStream("Image_Reg");
            byte[] buffer = new byte[1024];
            while (input.read(buffer) > 0) {
                fos.write(buffer);
            }
        }

Когда я сделал вышеуказанные изменения в коде, я мог видеть, что файлы генерируются, но когда я их открываю, он говорит «этофайл не может быть открыт "

1 Ответ

0 голосов
/ 26 марта 2019

Я обнаружил, что getSubCode () в запросе SQl не возвращает нужную строку, которая приводит к ошибке.

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