Estou desenvolvendo meu TCC em Jave e preciso recuperar arquivos armazenados no MySQL e grava-los no HD escolhendo o local, tipo download, alguem pode me ajudar, estou a dias procurando na Web e não encontro este código.
Obrigado.
Estou desenvolvendo meu TCC em Jave e preciso recuperar arquivos armazenados no MySQL e grava-los no HD escolhendo o local, tipo download, alguem pode me ajudar, estou a dias procurando na Web e não encontro este código.
Obrigado.
Uai, entoum faça igual vc gravou lá, post ai como vc gravou pra vermos!
Um conselho> Java é orientado a objetos, então se possível utilize Hibernate, você não terá preocupação com banco de dados, e sim com suas classes. Você ganha tempo e desempenho.
Imagine persitir um objeto do tipo x, em uma tabela que é do tipo y?? O hibernate já faz o serviço pesado para você!
Faço esta chamada:
JFrame f = new p800_arquivo.BibTCC_c800_Arquivo();
f.setVisible(false);
f.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.out.println("Exit");
System.exit(0);}});
Aqui gravo:
package p800_arquivo;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.swing.*;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
public class BibTCC_c800_Arquivo extends JFrame {
JFileChooser chooser = new JFileChooser();
static p900_jdbc.BibTCC_c900_Jdbc jdbc = new p900_jdbc.BibTCC_c900_Jdbc();
p800_arquivo.BibTCC_c801_Arquivo arquivo = new p800_arquivo.BibTCC_c801_Arquivo();
public BibTCC_c800_Arquivo() throws FileNotFoundException, SQLException {
System.out.println(" Entrou no c800_Arquivo");
//System.out.println(" id_tcc: "+ arquivo.getId_tcc());
int state = chooser.showOpenDialog(null);
File fileC = chooser.getSelectedFile();
if (fileC != null && state == JFileChooser.APPROVE_OPTION) {
//JOptionPane.showMessageDialog(null, "Arquivo selecionado: "+ fileC.getPath()+" id "+arquivo.getId_tcc());
File file = new File(fileC.getPath());
FileInputStream fileIn = new FileInputStream(file);
//execução de código jdbc
jdbc.executaJdbc();
String sql = "insert into tb_arquivo(id_tcc, ar_arquivo) values (?,?)";
PreparedStatement query = (PreparedStatement) jdbc.con.prepareStatement(sql);
query.setInt(1, arquivo.getId_tcc());
query.setBinaryStream(2, fileIn, (int)file.length());
query.executeUpdate();
} else if (state == JFileChooser.CANCEL_OPTION) {
JOptionPane.showMessageDialog(null, "Seleção de Arquivo Cancelado");
}
}
}
Ai se abre o box e escolho o arquivo que é armazenado no Mysql sem problema.
Quanto au Hibernate, sou novissimo em Java e estou na forca para terminar o TCC, que é uma biblioteca para armazenar TCCs, tenho 20 dias para terminar, e como já consegui gravar no MySQL. . .
dá uma olhada nesse artigo: http://javafree.uol.com.br/artigo/851262/Manipulando-campos-BLOB-e-CLOB-com-JDBC.html
Dá uma estudada também no FileOutputStream.
Obrigado pela atenção, dei uma olhada, mais pela minha urgência, o que preciso é de um código que faça um select no banco e abra um box para que possa gravar o arquivo onde for escolhido, será que alguem tem um?
20 dias para vc fazer isso dá e sobra. Explica melhor a dúvida, do jeito que está falando parece que quer que façamos esse código inteiro para você.
Explica o que você sabe fazer dessa parte e o que está faltando para vc conseguir fazer. Código inteiro e tão específico assim ninguém vai te dar.
um exemplo que talvez te ajude:
InputStream is;
OutputStream os;
// Código para vc inicializar o is e o os. No caso, você vai buscar o is da base de dados e o os seria um FileOutputStream.
byte[] byteFile = new byte[1024];
while ((bytes = is.read(byteFile)) != -1) {
os.write(byteFile, 0, bytes);
os.flush();
}
Minha tabela é tb_arquivo, tenho que pesquisar o id_tcc e recuperar o arquivo que esta armazenado no campo LONGBLOB ar_arquivo, então grava-lo, selecionando uma pasta no computador com o nome que esta no campo ar_nome.
É tipo um donwload, será que não tem um código padrão para isto?
cara, não é tão complicado assim, separa em passos menores e vc vai ver, com as coisas que eu falei, o que estou falando.