Consulta MySql no Eclipse

Olá a todos estou fazendo um aplicação que necessita de uma pesquisa a um determinado banco mysql como segue o código abaixo:

[code]
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();
}

}[/code]
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.

[quote=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:

[code]
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();
}

}[/code]
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.[/quote]

SELECT * FROM
não SELECT FROM

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

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

[quote=RenanRosa][quote=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:

[code]
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();
}

}[/code]
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.[/quote]

SELECT * FROM
não SELECT FROM

String sql = "select * from contato where id=?"; [/quote]
Modifiquei conforme sugerido porém o erro continuou praticamente o mesmo

E agora?

[quote=tiago.vt]vc esqueceu do * antes do from de passa o parametro do id da consulta

[/quote]

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

E agora?

[quote=alverne][quote=tiago.vt]vc esqueceu do * antes do from de passa o parametro do id da consulta

[/quote]

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

E agora?[/quote]

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…

[quote=RenanRosa][quote=alverne][quote=tiago.vt]vc esqueceu do * antes do from de passa o parametro do id da consulta

[/quote]

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

E agora?[/quote]

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…[/quote]

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

Continua usando normalmente:

[code]
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();
}

}[/code]

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();
	}
}

[quote=RenanRosa]Continua usando normalmente:

[code]
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();
}

}[/code]

ou com PreparedStatement:

Continua usando normalmente:

[code]

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();
}

}
[/code][/quote]

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

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

abraço

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

abraço[/quote]

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(); } }

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

abraço[/quote]

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(); } }[/quote]

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 ???

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

abraço[/quote]

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(); } }[/quote]

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 ???[/quote]

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?

[quote=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?[/quote]
: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.

[quote=RenanRosa][quote=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?[/quote]
: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.
[/quote]

Vlw!!!