2015-08-10 2 views
0

Я хотел спросить, как загрузить файл из базы данных и сохранить его с помощью Jfilechooser. Можете ли вы дать мне представление о том, как это будет работать?сохранение файла из базы данных с помощью JFileChooser

koneksi_db(); 
JFileChooser fs = new JFileChooser(); 
fs.setDialogTitle("save a file"); 
int result = fs.showSaveDialog(null); 

try { 
    PreparedStatement ps = conn.prepareStatement("select * from file where nama = ?"); 
    ResultSet rs = ps.executeQuery(); 
    if (rs.next()) { 
     fs.setCurrentDirectory(new File("/home/me/Documents")); 
     int tampak = fs.showSaveDialog(null); 
     if (tampak == JFileChooser.APPROVE_OPTION) { 

     } 
    } 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null, "sql error"); 
} 

Я не знаю, что я должен делать после JFileChooser.APPROVE_OPTION.

+0

Итак, я предполагаю, что поиск «файла записи в java» не был успешным? Интересно, почему ... – Tom

+0

ok thx jonathan ... –

ответ

0

Я предполагаю, что изображения хранятся как BLOB. Вы должны получить binaryStream из набора результатов, прочитать его и записать в файл по выбранному пути. Например:

try (Connection connection = ConnectionHelper.getConnection(); 
    PreparedStatenent ps = 
      conn.prepareStatement("select image from file where nama = ?")) { 

     ps.setXXX() // set the value for 'nama' 
     ResultSet rs = ps.executeQuery(); 

     if(rs.next()){ 
      fs.setCurrentDirectory(new File("/home/me/Documents")); 
      int tampak = fs.showSaveDialog(null); 

      if (tampak == JFileChooser.APPROVE_OPTION){ 
       File file = fs.getSelectedFile(); 
       try (InputStream stream = rs.getBinaryStream("image"); 
        OutputStream output = new FileOutputStream(file)) { 

        byte[] buffer = new byte[4096]; 
        while (stream.read(buffer) > 0) { 
          output.write(buffer); 
        } 
       } 
      } 
     } 
     rs.close(); 
    } catch(FileNotFoundException fnfe){ 
     // FileNotFoundException handling 
    } catch(IOException ioe) { 
     // IOException handling 
    } catch(SQLException sqle) { 
    // SQLException handling 
    } 
} 

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

+0

Откуда вы знаете, что ему нравится писать двоичный файл? Откуда вы знаете его структуру таблицы? – Tom

+0

Добро пожаловать в Stack Overflow, не могли бы вы объяснить, что вы сделали и почему это сработало? – KFichter

+1

Том, мне не нужно знать, что у него структура стола. Он просто хочет скачать файл (возможно, изображение, возможно, другой тип файла) из базы данных. Когда вы сохраняете изображение в базе данных, обычно вы конвертируете изображение в массив байтов для соответствия столбцу blob. Я предполагаю, что это он (возможно, я ошибаюсь). KFitcher Просто получите поток/blobk из базы данных и напишите его в файле. PD: Извините за мой английский. – Someone

Смежные вопросы