Gravar um arquivo (JPEG) no banco de dados [Resolvido]

8 respostas
Mapko

Bom pessoal,, é o seguinte estou tentando cadastrar uma imagem no meu banco de dados mas a parte de cadastrar está dando erro....

Meu cadastro funciona assim:

tenho um método que faz o cadastro da imagem e fica dentro da classe ConexaoBanco:

public void insertImage(String endereco) throws SQLException, FileNotFoundException{

         File arquivo = new File(endereco);
         FileInputStream fis = new FileInputStream(arquivo);
         int filelength = (int) arquivo.length(); 
         PreparedStatement pst = getConexao().prepareStatement(
                "insert into imagem " + 
                "values (?,?)");
           pst.setBinaryStream(1, fis, filelength);
           pst.setInt(2, 1);
           pst.executeUpdate();
           
     }

Em outra classe eu peço o endereço mas ele pede pra eu colocar esse tratamento de exceções que eu não entendo nada e acredito que está provocando o erro :

ConexaoBanco conn = new ConexaoBanco();
         
       try {
            conn.insertImage(jTextField1.getText());
        } catch (SQLException ex) {
            Logger.getLogger(app.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(app.class.getName()).log(Level.SEVERE, null, ex);
        }

esse é o erro que aparece:

java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver
at java.security.AccessController.doPrivileged(Native Method)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.Class.forName0(Native Method)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

A minha tabela no banco tem

imagem blob,
codigo integer not null

Já conferi a senha , usuário e tbm o endereço do database.

Se alguém puder me ajudar isso é muito importante.
Obrigado.

8 Respostas

L

java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver

o driver do firebird ta no classpath? o o caminho da classe é realmente esse( org.firebirdsql.jdbc.FBDriver )?

Mapko

Sim…já olhei isso…já testei com outros projetos…acabei de reinstalar o servidor.

king_of_gods

Verifica se o servidor está permitindo acesso remoto.

Mapko

Acesso remoto?
Bom....já testei outros projetos aqui no meu computador...não sei se pode ser isso...poderia?

aqui eu faço a conexão:

public Connection getConexao() {
        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            return DriverManager.getConnection
                    ("jdbc:firebirdsql:localhost/3050:" + 
                    "C:/TesteImagem/imagem.gdb",
                    "SYSDBA",
                    "masterkey");
            
        } catch (Exception e) {
             e.printStackTrace();
        }
        return null;
    }
king_of_gods
Mapko:
Acesso remoto? Bom....já testei outros projetos aqui no meu computador...não sei se pode ser isso...poderia?

aqui eu faço a conexão:

public Connection getConexao() {
        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            return DriverManager.getConnection
                    ("jdbc:firebirdsql:localhost/3050:" + 
                    "C:/TesteImagem/imagem.gdb",
                    "SYSDBA",
                    "masterkey");
            
        } catch (Exception e) {
             e.printStackTrace();
        }
        return null;
    }

Pq eu mexo com SQL Server, e geralmente vc tem q entrar nele e configurar o ip que vc quer acessar.

Verificou mesmo que o drive está no classpath?
O erro é falta de driver.

Mapko

Era isso…obrigado…eu estava adicionando o driver na biblioteca errada mesmo…porém agora supostamente era pra ter cadastrado
mas na minha tabela o campo blob está null.

quando eu cadastro nos exemplos eu vejo File(“C:”)…essas aspas fazem diferença??
no meu caso eu não sei como fazer para o conteúdo que o usuário digita ficar dentro de aspas…então se
ele mesmo coloca as aspas o arquivo não é encontrado…mas sem aspas “funciona”…
eu estou usando Interbase e IBConsole (não tenho escolha…tenho que fazer o projeto e só nesse computador)…
alguém sabe como resolver esse problema?

F

Olá, Mapko.

Sim, fazem diferença. Se vc puder colocar o caminho do arquivo numa variável do tipo String, vc não precisa se preocupar com aspas, pois estas já vêm como default. Aí vc passaria essa variável String como parâmetro para o construtor da classe File.

Abraço.

Mapko

É…agora está cadastrando no banco mas eu não sabia que era Default…
Obrigado pela informação.

Criado 18 de março de 2008
Ultima resposta 19 de mar. de 2008
Respostas 8
Participantes 4