Erro ao inserir um bytea com postgres no JAVA

4 respostas
A

olá pessoal, Bom Dia… já pesquisei em vários lugares e não consegui solucionar…
estou tentando inserir uma imagem no BD com o campo bytea atraves de um aplicação Java.
a tabela ele criou beleza… mas ao inserir a imagem ele lança uma exceção SQL. o código é este:

stmt.executeUpdate("create table imagens( nome text, foto bytea ) ");

            File file = new File("c:\\teste\\ivo.jpg");
            FileInputStream fis = new FileInputStream(file);

            PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (ivo, c:\\teste\\ivo.jpg)");
            ps.setString(1, file.getName());
            ps.setBinaryStream(2, fis, (int) file.length());
            ps.executeUpdate();
            ps.close();
            fis.close();

onde conn é um atributo do tipo Connection.

o erro é o seguinte:

org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 1, número de colunas: 0.
    at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:57)
    at org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:121)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.bindString(AbstractJdbc2Statement.java:2112)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1238)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.setString(AbstractJdbc2Statement.java:1224)
    at ByteaTeste.main(ByteaTeste.java:59)

Por favor… alguem pode me dizer pq esse erro está ocorrendo?

Muito Obrigado!

[]'s

4 Respostas

J
<blockquote>PreparedStatement ps = conn.prepareStatement(“INSERT INTO images VALUES (ivo, c:\teste\ivo.jpg)”);

ps.setString(1, file.getName());

ps.setBinaryStream(2, fis, (int) file.length());

ps.executeUpdate();

ps.close();

fis.close(); </blockquote>

Não há nenhum parametro na expressão SQL:

PreparedStatement ps = conn.prepareStatement&#40;&quot;INSERT INTO images VALUES &#40;?, ?&#41;&quot;&#41;; ps.setString&#40;1, file.getName&#40;&#41;&#41;; ps.setBinaryStream&#40;2, fis, &#40;int&#41; file.length&#40;&#41;&#41;; ps.executeUpdate&#40;&#41;; ps.close&#40;&#41;; fis.close&#40;&#41;;

A

desculpe JairElton… não entendi o que voce quis dizer?
pode explicar melhor, por favor?

E

opa blz?

o que foi dito é o seguinte, o formato que tu definou o

está errado

altere para:

este é o formato correto de definição, altere essa linha no seu código
e teste novamente :wink:

[]´s

A

VALEEEU!

MUITO OBRIGADO!!!

Criado 9 de outubro de 2006
Ultima resposta 9 de out. de 2006
Respostas 4
Participantes 3