Comando SQL Inválido

6 respostas
pettalas

Olá galera!

Estou com o seguite problema:
Criei uma classe de conexão com Oracle e nela estou inserindo valores em uma determinada tabela.

Digito os valores e o programa sempre devolve uma mensagem dizendo:
“Instrução SQL inválida”.
Mas quando consulto pelo banco, os valores inseridos estão lá.

Alguém sabe me explicar por que ele dá essa mensagem se está inserindo os dados?

Valeu!
:roll: :?: :expressionless: :thumbup:

6 Respostas

esb

Oi pettalas,

Posta o seu código pra gente te ajudar melhor.

[]s
Eduardo

pettalas

Galera, esse é o meu código:

import java.sql.*;
import oracle.jdbc.driver.OracleDriver;
import java.util.Date;
import javax.swing.JOptionPane;


/**
 *
 * @author user
 */
public class inserir {
    
    /** Creates a new instance of inserir */
          public static void main(String args[]) {

          Connection con;
          Statement stmt;
          
          String codigo = JOptionPane.showInputDialog (null, "Codigo do Produto", "Produto",JOptionPane.QUESTION_MESSAGE);
          String descricao = JOptionPane.showInputDialog (null, "Descrição","Produto", JOptionPane.QUESTION_MESSAGE);

          String query = "insert into produto values ('" + codigo + "','" + descricao + "')";

          try {
               Class.forName("oracle.jdbc.driver.OracleDriver");

          } catch(java.lang.ClassNotFoundException e) {
               System.err.print("ClassNotFoundException: ");
               System.err.println(e.getMessage());
          }

          try {
                 con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "venus", "venus");

               stmt = con.createStatement();

               ResultSet rs = stmt.executeQuery(query);
               System.out.println("Comando SQL de inserção = " + query);

               System.out.println("Teste Oracle");
               while (rs.next()) {
                    String s = rs.getString("cod_produto");
                    String bh = rs.getString("descricao");
                                System.out.println(s + "   " + bh);

               }

               stmt.close();
               con.close();

          } catch(SQLException ex) {
               System.err.println("SQLException: " + ex.getMessage());
          }
     }
}
//*********************************

O TCC está me tirando meus cabelos!
:roll: :cry:

C

Falta o commit do insert.

bland

Pettalas,

Tente ao invés de utilizar o método executeQuery do ResultSet, utilizar o executeUpdate.
Não sei ao certo se seria isso, mas por um raciocínio lógico, você está tentando efetuar uma busca (através do método executeQuery) utilizando um comando de atualização (insert).
Ou seja, sempre que desejar atualizar qualquer coisa no banco (seja através do insert, do update ou do delete) você deve chamar o executeUpdate do ResultSet.

Outra coisa é o que cecaldas comentou. Você deve sempre dar um commit para que a sua query (de atualização) surta efeito. E para resgatar as informações que foram persistidas no banco, você deveria efetuar uma consulta depois da inserção. Ou seja, depois que você inserir uma informação no banco de dados, você efetua uma busca (select) para poder retornar os dados persistidos no banco.

Espero ter ajudado.
Abraço.

pettalas

Valeu galera!

Vou tentar e depois aviso vocês sobre o resultado!

Obrigada pela ajuda!

Inté,
Evelyn

pettalas

Valeu pessoas!

Vocês estão me ajudando bastante!

Bland, fiz o que vc falou e deu certo!

Muito obrigada!

Inté,
Evelyn

Criado 8 de outubro de 2006
Ultima resposta 10 de out. de 2006
Respostas 6
Participantes 4