Consulta banco de dados

8 respostas
R

Boa tarde,

Não estou conseguindo efetuar a consulta do banco de dados, aparece sempre a mensagem de erro SQL.
Poderiam verificar?

Grato,

Ramon

=============

if(e.getSource()==B1)
	{
		ResultSet rs;
		Statement MeuState ;
		Connection con = null;
		Ta.setText("");
		String Url = "jdbc:mysql://localhost/restaurantedapraia";
		String usuario="root";
		String senha="root";
		
		try
		{
			con = DriverManager.getConnection(Url,usuario,senha);
			MeuState = con.createStatement();
			
			String SQL = "SELECT * FROM itempedido";
			rs = MeuState.executeQuery(SQL);
			rs.next();
			String A = "         Mesa                     Código Prato & Bebida 			Quantidade\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, "Erro de SQL","Mensagem",1);
			System.exit(0);
		}
		
	
	}

8 Respostas

luis.soares

Qual a mensagem de erro ??

R

Não está consultando o banco vai direto para o catch.
Os campos da tabela itempedido são: mesas, codigopratobebida e quantidade.

P
if(e.getSource()==B1)

{

ResultSet rs;

Statement MeuState ;

Connection con = null;

Ta.setText("");

String Url = jdbc:mysql://localhost:/restaurantedapraia;

String usuario=“root”;

String senha=“root”;
try

{

Class.forName(com.mysql.jdbc.Driver);

con = DriverManager.getConnection(Url,usuario,senha);

MeuState = con.createStatement();
String SQL = SELECT * FROM itempedido;

rs = MeuState.executeQuery(SQL);

rs.next();

String A = " Mesa Código Prato & Bebida Quantidade\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, Erro de SQL”,“Mensagem”,1);

System.exit(0);

}

}

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

não entendi, pode me explicar melhor!!!

luis.soares
  1. 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.

  2. 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

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) // falta fazer consulta ao banco
	{
		ResultSet rs;
		Statement MeuState ;
		Ta.setText("");
		String nomedobanco = "jdbc:mysql://localhost/restaurantedapraia";
		String usuario="root";
		String senha="root";
		
		try
		{
			Connection con = DriverManager.getConnection(nomedobanco,usuario,senha);
			MeuState = con.createStatement();
			String SQL = "SELECT * FROM itempedido";
			
			rs = MeuState.executeQuery(SQL);
			rs.next();
			String A = "         Mesa         Código Prato & Bebida 			Quantidade\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, "Erro de SQL","Mensagem",1);
			System.exit(0);
		}
		
	
	}
R

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?


for(int x=0;x<3;x++)

{

String B = rs.getString(mesas);

String C = rs.getString(codigopratobebida);

String D = rs.getString(quantidade);

D = D.replace (’.’,’,’);

A = “\n   \t+	B+"               “+”\t  “+C+”  “+”                   “+”  “+D+”\n" ;

Ta.append(A);

rs.next();			

}
catch(SQLException ex)

{

JOptionPane.showMessageDialog(null, Erro de SQL”,“Mensagem”,1);

System.exit(0);

}
Criado 17 de novembro de 2006
Ultima resposta 17 de nov. de 2006
Respostas 8
Participantes 3