Aew galera, eu tinha parada um poko de enxer o saco aqui, pois eu não estava correndo atras, eu queria tudo pronto. Enfim aprendi mt coisa sozinho já, porém estou com um problema em BD.
Atualmente estou utilizando MySql, Consigo fazer a conexão, os SELECT, inserir dados e por ai vai.
A duvida é a seguinte, sempre que eu uso o comando:
stmt.executeQuery(comando sql), isto esta dentro de um bloco try catch,
Até o momento tudo bem. O problema está quando eu uso INSERT e UPDATE, ele grava e atualiza, mas aparece uma exceção:
java.sql.SQLException: No ResultSet was produced
Tudo que eu coloco depois da linha executeQuery ele não executa, parece que da um tipo de break e sai fora do bloco try catch.
Por exemplo:
if(resposta == 0){
v.vE.textSelecionaLeito.setText("");
v.bd.rS = v.bd.stmt.executeQuery(“UPDATE cantina SET Status = ‘false’ WHERE Leito = '”+Integer.parseInt(v.vE.textSelecionaLeito.getText())+"’");
JOptionPane.showMessageDialog(null,“Cliente excluido com sucesso!”,“Remover Clientes”, JOptionPane.INFORMATION_MESSAGE );
}
Depois do executeQuery era para aparecer uma caixa de dialogo dizendo que o cliente havia sido excluido, porem não aparece.
O que fazer para não ocorrer essa exceção?
stmt é um objeto de que classe? Coloca o código completo (entre as tags
para ficar melhor de ler).
E procure usar PreparedStatement, facilita muito a nossa vida.
Ok vou colocar um código pequeno aqui
import java.sql.*;
public class BancoDados {
Connection con;
Statement stmt;
ResultSet rS;
/** Creates a new instance of BancoDados */
public BancoDados() {
}
public void abreConexao(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:cantinaDB";
String user = "usuario";
String password = "password";
con = DriverManager.getConnection(url,user,password);
stmt = con.createStatement();
}catch(Exception e){
System.out.println(e);
}
}
}
public static void main(String [] args){
BancoDados bd = new BancoDados();
try{
bd.abreConexao();
bd.rS = v.bd.stmt.executeQuery("UPDATE cantina SET Status = 'false' WHERE Leito = '1'");
JOptionPane.showMessageDialog(null,"Cliente excluido com sucesso!","Remover Clientes", JOptionPane.INFORMATION_MESSAGE );
v.bd.rS.close();
}catch(Exception exExcluir){
System.out.println(exExcluir);// aqui esta imprimindo o erro que eu havia dito anteriormente
}
}
Use executeUpdate.
Leia a documentação da classe aqui java.sql.Connection
OK, mas poderia falar o motivo de aparecer a exceção
java.sql.SQLException: No ResultSet was produced
Vlw, basicamente tudo esto no javadoc, se tem tudo lá pq existe o forum?
Eu acho que o forum seria um meio mais rapido de esclarecer duvidas, mas mesmo assim obrigado pelo apoio. No stress
[quote=Eduardo_prd]Vlw, basicamente tudo esto no javadoc, se tem tudo lá pq existe o forum?
[/quote]
Para responder a duvidas que nao esstao nos javadocs ou no google e para indicar a pessoas que nao procuraram direito onde encontrar
Só complementando…
executeQuery retorna um ResultSet
executeUpdate retorna um int
execute nao retorna nada
Vlw velho, não sei se entendeu mal, mas axo que eu naum estou sabendo procurar mesmo, la na facul a gente tem 1 semestre de java, e la ensina o basico, do basico, do basico. Como eu achei java uma liguagem atraente eu por si mesmo estou me aprofundando, e nunca ia passar pela minha cabeça, que quando eu do um insert ou update, eu tinha que usar executeUpdate, mesmo pq nos livros que eu tenho aqui, core java2 Vol I e II, não falam isso.
Obrigado pela ajuda e espero algum dia poder ajudar os outros tbm