Obs: o driver do mysql precisa estar no classpath.
luis.soares
Coloque um log para capturar o erro original, ou tire o catch temporariamente para ver qual o erro original.
O erro pode estar ocorrendo no sql ou na conexão com o banco de dados, pois o seu catch trata todo o bloco, desde a conexão ate a execução.
O correto é você isolar a execução de sql, da conexão com o banco, tratanto separadamente os erros.
R
rjrider
não entendi, pode me explicar melhor!!!
luis.soares
Para ver o erro que está ocorrendo, você tem 2 opções : retirar o try/catch e rodar para ver o erro original ou utilizar um log, como o Log4J da Apache.
O seu tratamento de erros está sendo feito de forma errada. Você está tratando dentro de um mesmo bloco a conexão com o banco e a execução do sql. Quando ocorre um erro na sua classe hoje, você dá a mensagem “Erro de SQL…”. Mas você não sabe se o erro foi realmente no sql ou na conexão com o Banco.
Você deve isolar as 2 coisas : deixar a conexão com o banco em um local (preferencialmente uma classe específica usando o padrão de factory por exemplo, que lhe retorna uma conexão pronta para ser usada), e a excução do Sql em outro.
Se você não compreendeu, sugiro que leia mais sobre tratamento de execções, padrões de projeto, etc.
Abraço.
R
rjrider
Consegui resolver uma parte, ou seja, está listando os dados que pedi, mas no fim da consulta, aparece a mensagem de erro SQL, ou seja, executa o catch de erro, como devo proceder para evidar que o catch só será acionado se realmente tiver erro no sql?
if(e.getSource()==B1)//faltafazerconsultaaobanco{ResultSetrs;StatementMeuState;Ta.setText("");Stringnomedobanco="jdbc:mysql://localhost/restaurantedapraia"; String usuario="root"; String senha="root"; try { Connection con = DriverManager.getConnection(nomedobanco,usuario,senha); MeuState = con.createStatement(); String SQL = "SELECT*FROMitempedido"; rs = MeuState.executeQuery(SQL); rs.next(); String A = "MesaCódigoPrato&BebidaQuantidade\n\n"; Ta.append(A); for(int x=0;x<75;x++) { String B = rs.getString("mesas"); String C = rs.getString("codigopratobebida"); String D = rs.getString("quantidade"); A = "\n\t"+ B+""+"\t"+C+""+"---------------------"+""+D+"\n" ; Ta.append(A); rs.next(); } con.close(); MeuState.close(); rs.close(); } catch(SQLException ex) { JOptionPane.showMessageDialog(null, "ErrodeSQL","Mensagem",1);System.exit(0);}}
R
rjrider
Alguém pode me dizer qual o comando adequado para que ele não execute a mensagem de erro no catch?
se o registro da tabela só existe 2, se o laço do for for 3 ele executa a mensagem de erro do catch, como faço para contornar?