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?
importjava.sql.*;importoracle.jdbc.driver.OracleDriver;importjava.util.Date;importjavax.swing.JOptionPane;/** * * @author user */publicclassinserir{/** Creates a new instance of inserir */publicstaticvoidmain(Stringargs[]){Connectioncon;Statementstmt;Stringcodigo=JOptionPane.showInputDialog(null,"Codigo do Produto","Produto",JOptionPane.QUESTION_MESSAGE);Stringdescricao=JOptionPane.showInputDialog(null,"Descrição","Produto",JOptionPane.QUESTION_MESSAGE);Stringquery="insert into produto values ('"+codigo+"','"+descricao+"')";try{Class.forName("oracle.jdbc.driver.OracleDriver");}catch(java.lang.ClassNotFoundExceptione){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();ResultSetrs=stmt.executeQuery(query);System.out.println("Comando SQL de inserção = "+query);System.out.println("Teste Oracle");while(rs.next()){Strings=rs.getString("cod_produto");Stringbh=rs.getString("descricao");System.out.println(s+" "+bh);}stmt.close();con.close();}catch(SQLExceptionex){System.err.println("SQLException: "+ex.getMessage());}}}//*********************************
O TCC está me tirando meus cabelos!
:roll: :cry:
C
cecaldas
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!