Consulta MySql no Eclipse

14 respostas
A
Olá a todos estou fazendo um aplicação que necessita de uma pesquisa a um determinado banco mysql como segue o código abaixo:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		Statement st = conexao.createStatement();
		
		String sql = "select from contato where id=?";
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}
O problema é que quando executo o main e mando pesquisar ele mostra a seguinte mensagem de erro: Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from contato where id=?' at line 1

O que poderia ser? O método de inserção funciona com o ?. Não estou conseguindo processar esta pesquisa o resto do projeto tá funcionando direito. Agradeço desde já as contribuições.

14 Respostas

R
alverne:
Olá a todos estou fazendo um aplicação que necessita de uma pesquisa a um determinado banco mysql como segue o código abaixo:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		Statement st = conexao.createStatement();
		
		String sql = "select from contato where id=?";
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}
O problema é que quando executo o main e mando pesquisar ele mostra a seguinte mensagem de erro: Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from contato where id=?' at line 1

O que poderia ser? O método de inserção funciona com o ?. Não estou conseguindo processar esta pesquisa o resto do projeto tá funcionando direito. Agradeço desde já as contribuições.

SELECT * FROM
não SELECT FROM

String sql = "select * from contato where id=?";
T

vc esqueceu do * antes do from de passa o parametro do id da consulta

A
RenanRosa:
alverne:
Olá a todos estou fazendo um aplicação que necessita de uma pesquisa a um determinado banco mysql como segue o código abaixo:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		Statement st = conexao.createStatement();
		
		String sql = "select from contato where id=?";
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}
O problema é que quando executo o main e mando pesquisar ele mostra a seguinte mensagem de erro: Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from contato where id=?' at line 1

O que poderia ser? O método de inserção funciona com o ?. Não estou conseguindo processar esta pesquisa o resto do projeto tá funcionando direito. Agradeço desde já as contribuições.

SELECT * FROM
não SELECT FROM

String sql = "select * from contato where id=?";
Modifiquei conforme sugerido porém o erro continuou praticamente o mesmo
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1

E agora?

A

tiago.vt:
vc esqueceu do * antes do from de passa o parametro do id da consulta

Modifiquei conforme sugerido porém o erro continuou praticamente o mesmo

E agora?

R

alverne:
tiago.vt:
vc esqueceu do * antes do from de passa o parametro do id da consulta

Modifiquei conforme sugerido porém o erro continuou praticamente o mesmo

E agora?

primeiro de tudo está usando um statement, por isso remova o WHERE id = ? do seu SQL
ou então mude de statement para preparedstatement
caso mude para PS depois adicione um valor para “?” atraves do ps.setString/setInt etc…

A

RenanRosa:
alverne:
tiago.vt:
vc esqueceu do * antes do from de passa o parametro do id da consulta

Modifiquei conforme sugerido porém o erro continuou praticamente o mesmo

E agora?

primeiro de tudo está usando um statement, por isso remova o WHERE id = ? do seu SQL
ou então mude de statement para preparedstatement
caso mude para PS depois adicione um valor para “?” atraves do ps.setString/setInt etc…

Mas aí continuo usando o ResultSet? E o while continua o mesmo?

R
Continua usando normalmente:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		Statement st = conexao.createStatement();
		
		String sql = "select * from contato";
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}

ou com PreparedStatement:

Continua usando normalmente:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		PreparedStatement pst;
		
		int idValor = 456654;
		String sql = "select * from contato WHERE id = ?";
		pst = conexao.prepareStatement(sql);
		//         posição, valor
		pst.setInt(1, idValor);
		
		ResultSet rs = pst.executeQuery();
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}
A
RenanRosa:
Continua usando normalmente:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		Statement st = conexao.createStatement();
		
		String sql = "select * from contato";
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}

ou com PreparedStatement:

Continua usando normalmente:
public class Pesquisa {
	private Connection conexao;
	public Pesquisa() throws SQLException{
		this.conexao =  CriaConexao.getConexao();
	}
	public void pesquisar(Contato c1) throws SQLException{
		PreparedStatement pst;
		
		int idValor = 456654;
		String sql = "select * from contato WHERE id = ?";
		pst = conexao.prepareStatement(sql);
		//         posição, valor
		pst.setInt(1, idValor);
		
		ResultSet rs = pst.executeQuery();
		
		while(rs.next()){
			String id = rs.getString("id");
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			String email = rs.getString("email");
			String sexo = rs.getString("sexo");
			System.out.println("-------------------------------------------------\n");
			System.out.println("Codigo: " + id + "\nNome:" +
					" "+nome+ "  \nEndereço: " + endereco + "" +
							"\nTelefone: " +telefone+"\nEmail:" +
									" "+email+"\nSexo: "+sexo);
		 
		}
		JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso");
		
		conexao.createStatement().close();
		conexao.close();
	}
}

Resolvido! Vlw pela dica. Resolvi meu probleminha! :D

R

beleza, se precisar posta ai.
coloca [RESOLVIDO] no titulo

abraço

A

RenanRosa:
beleza, se precisar posta ai.
coloca [RESOLVIDO] no titulo

abraço

Caro colega, infelizmente, ao executar a aplicação hoje não dá erro, porém não executa a função que seria mostrar o resultado da pesquisa:

package exemplo.bd.agenda.contatos; import java.sql.*; import javax.swing.JOptionPane; import com.mysql.*; public class Pesquisa { private Connection conexao; //criando construtor; public Pesquisa() throws SQLException{ this.conexao = CriaConexao.getConexao(); } public void pesquisar(Contato c1) throws SQLException{ String sql = "select *from contato where id=?"; PreparedStatement stmt = conexao.prepareStatement(sql); stmt.setLong(1, c1.getId()); ResultSet rs = stmt.executeQuery(); while(rs.next()){ String id = rs.getString("id"); String nome = rs.getString("nome"); String endereco = rs.getString("endereco"); String telefone = rs.getString("telefone"); String email = rs.getString("email"); String sexo = rs.getString("sexo"); System.out.println("------------------------------------------\n"); System.out.println("Codigo: " + id + "\nNome:" + " "+nome+ " \nEndereço: " + endereco + "" + "\nTelefone: " +telefone+"\nEmail:" + " "+email+"\nSexo: "+sexo); } JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso"); stmt.close(); rs.close(); conexao.close(); } }

R

alverne:
RenanRosa:
beleza, se precisar posta ai.
coloca [RESOLVIDO] no titulo

abraço

Caro colega, infelizmente, ao executar a aplicação hoje não dá erro, porém não executa a função que seria mostrar o resultado da pesquisa:

package exemplo.bd.agenda.contatos; import java.sql.*; import javax.swing.JOptionPane; import com.mysql.*; public class Pesquisa { private Connection conexao; //criando construtor; public Pesquisa() throws SQLException{ this.conexao = CriaConexao.getConexao(); } public void pesquisar(Contato c1) throws SQLException{ String sql = "select *from contato where id=?"; PreparedStatement stmt = conexao.prepareStatement(sql); stmt.setLong(1, c1.getId()); ResultSet rs = stmt.executeQuery(); while(rs.next()){ String id = rs.getString("id"); String nome = rs.getString("nome"); String endereco = rs.getString("endereco"); String telefone = rs.getString("telefone"); String email = rs.getString("email"); String sexo = rs.getString("sexo"); System.out.println("------------------------------------------\n"); System.out.println("Codigo: " + id + "\nNome:" + " "+nome+ " \nEndereço: " + endereco + "" + "\nTelefone: " +telefone+"\nEmail:" + " "+email+"\nSexo: "+sexo); } JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso"); stmt.close(); rs.close(); conexao.close(); } }

ele deu algum erro??
o id que está informando é valido e tem no banco ??
sabe debugar ?
verifica se o sql que é gerado no PS roda no banco (copia e cola no banco e executa)
o id é número no banco ??
tentou setInt em vez do setLong ???

A

RenanRosa:
alverne:
RenanRosa:
beleza, se precisar posta ai.
coloca [RESOLVIDO] no titulo

abraço

Caro colega, infelizmente, ao executar a aplicação hoje não dá erro, porém não executa a função que seria mostrar o resultado da pesquisa:

package exemplo.bd.agenda.contatos; import java.sql.*; import javax.swing.JOptionPane; import com.mysql.*; public class Pesquisa { private Connection conexao; //criando construtor; public Pesquisa() throws SQLException{ this.conexao = CriaConexao.getConexao(); } public void pesquisar(Contato c1) throws SQLException{ String sql = "select *from contato where id=?"; PreparedStatement stmt = conexao.prepareStatement(sql); stmt.setLong(1, c1.getId()); ResultSet rs = stmt.executeQuery(); while(rs.next()){ String id = rs.getString("id"); String nome = rs.getString("nome"); String endereco = rs.getString("endereco"); String telefone = rs.getString("telefone"); String email = rs.getString("email"); String sexo = rs.getString("sexo"); System.out.println("------------------------------------------\n"); System.out.println("Codigo: " + id + "\nNome:" + " "+nome+ " \nEndereço: " + endereco + "" + "\nTelefone: " +telefone+"\nEmail:" + " "+email+"\nSexo: "+sexo); } JOptionPane.showMessageDialog(null, "Pesquisa Realizada com sucesso"); stmt.close(); rs.close(); conexao.close(); } }

ele deu algum erro??
o id que está informando é valido e tem no banco ??
sabe debugar ?
verifica se o sql que é gerado no PS roda no banco (copia e cola no banco e executa)
o id é número no banco ??
tentou setInt em vez do setLong ???

Nobre colega! Vlw mesmo pela dica agr só foi mudar para setInt que deu certo. vou colocar como RESOLVIDO. Tem explicação para esta mudança: setLong ou setInt?

R

alverne:

Nobre colega! Vlw mesmo pela dica agr só foi mudar para setInt que deu certo. vou colocar como RESOLVIDO. Tem explicação para esta mudança: setLong ou setInt?

:smiley: beleza
a questão da diferença, é que o java trata cada um de um jeito diferente (jeito que o java trata internamente), é igual se você colocar setString, ele (java) não coloca aspas, mas funciona do mesmo jeito, agora se for rodar no banco sem aspas não funciona.

A

RenanRosa:
alverne:

Nobre colega! Vlw mesmo pela dica agr só foi mudar para setInt que deu certo. vou colocar como RESOLVIDO. Tem explicação para esta mudança: setLong ou setInt?

:smiley: beleza
a questão da diferença, é que o java trata cada um de um jeito diferente (jeito que o java trata internamente), é igual se você colocar setString, ele (java) não coloca aspas, mas funciona do mesmo jeito, agora se for rodar no banco sem aspas não funciona.

Vlw!!!

Criado 29 de abril de 2011
Ultima resposta 30 de abr. de 2011
Respostas 14
Participantes 3