Jump to content

Guardar documentos na base de dados


Las Vegas

Recommended Posts

Viva.

Essa questão é daquelas que não tem propriamente resposta certa.

Depende do projeto, do objetivo, dos acessos, etc..

Guardares o documento na base de dados tem a vantagem de que quando fazes backup ou uma migração ou algo semelhante, garantes que levas todos os teus dados. Por outro lado, a BD vai engordar a cada documento que lá colocas e tem uma carga relativamente grande (em comparação com outros campos de outros tipos) no que toca à obtenção da informação (já não falo do insert porque presumo que haja um significativamente mais leituras do que escritas). Os blobs (assim como outros tipos de dados) são guardados à parte e não na tabela (isto ao nível físico de ficheiros no disco), e tê-los tem um custo adicional.
No teu caso, quando guardas isso na BD vais ter de receber o blob e convertê-lo para um ficheiro binário no disco para que depois o utilizador (ou a aplicação automaticamente) o possa abrir.

Guardares o documento fora da base de dados (tipicamente guardando o caminho num campo na tabela em detrimento de um blob) tem a vantagem de que colocas a BD mais magra, e chutas os acessos aos docs para a aplicação. Esta abordagem tem a desvantagem de que a aplicação de ter acesso ao ficheiro.
Não é o teu caso, mas em aplicações web pode-se ganhar bastante tempo se, por exemplo, o servidor web fizer cache destes ficheiros, despachando o seu acesso sem teres qualquer trabalho aplicacional.
No teu caso, quando necessitas de aceder a um ficheiro basta mandares abrir o mesmo com o comando do sistema operativo e o Word abre o doc automaticamente. Mas é necessário ter em atenção de que todos os postos onde a aplicação está instalada têm de ter acesso físico aos ficheiros. Sendo um doc presumo que estejas em Windows, pelo que esta abordagem necessita que todos os Windows onde a aplicação está instalada tenham acesso a uma pasta partilhada onde se encontram os ficheiros.

Em suma, não há propriamente uma resposta certa.
Já trabalhei com ambas as abordagens, e a decisão varia de acordo com as necessidades e especificidades dos projetos.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

  • 2 weeks later...

Bom dia,

Antes de mais obrigado a todos.

Consegui resolver o código e está a funcionar, deixo aqui para se alguém tem alguma dúvida:

Aqui escolho o documento,

JFileChooser choose = new JFileChooser();
    choose.showOpenDialog(null);
    File f = choose.getSelectedFile();
    String filename = f.getAbsolutePath();    

    jButton1.setText(filename);
    s = filename;

 

Aqui guarda na BD: 

 String sql = "INSERT";
     File inF = new File(s);
    
     try{
            
         cm = DriverManager.getConnection(ligação BD);
         ps = cm.prepareStatement(sql);              
        
              
         FileInputStream fis = new FileInputStream(inF);
         ps.setBinaryStream(8, fis);    
         ps.executeUpdate();      
         fis.close();
         JOptionPane.showMessageDialog(this, "Dados gravados com sucesso");

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

 

Aqui vejo o documento:

String sql = "SELECT";  

  try{

      cm = DriverManager.getConnection(Ligação BD);
      ps = cm.prepareStatement(sql);
           rs = ps.executeQuery();      

      while(rs.next()){                   
          
          File pdf = new File(caminho para exportar ficheiro);
          FileOutputStream fos = new FileOutputStream(pdf);
          
          byte[] buffer = new byte[1024];
          InputStream is = rs.getBinaryStream(9);
          
          while(is.read(buffer) > 0){
               fos.write(buffer);
          }
           fos.close();
          }
         JOptionPane.showMessageDialog(null, "Ficheiro exportado com sucesso");
     }catch(Exception e){

           JOptionPane.showMessageDialog(this, e);
    }
}


Edited by Las Vegas
Editar código
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.