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!
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]
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]
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!!!