Banco de dados

9 respostas
E

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?

9 Respostas

Z

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.

E

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
        }
    }
pcalcado

Use executeUpdate.

Leia a documentação da classe aqui java.sql.Connection

E

OK, mas poderia falar o motivo de aparecer a exceção

java.sql.SQLException: No ResultSet was produced

pcalcado

O javadoc pode :wink:

E

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 :smiley:

pcalcado

Eduardo_prd:
Vlw, basicamente tudo esto no javadoc, se tem tudo lá pq existe o forum?

Para responder a duvidas que nao esstao nos javadocs ou no google e para indicar a pessoas que nao procuraram direito onde encontrar :wink:

andre_a_s

Só complementando…

executeQuery retorna um ResultSet
executeUpdate retorna um int
execute nao retorna nada :wink:

E

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 :wink: e espero algum dia poder ajudar os outros tbm :slight_smile:

Criado 7 de julho de 2005
Ultima resposta 8 de jul. de 2005
Respostas 9
Participantes 4