AJUDA >> com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column {RESOLVIDO}

4 respostas
L

estou tendo esse erro na minha aplicacao;

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'rolamento' in 'where clause'

o formulario:

<form action="listaPorSecao" method="POST">
 
 <select name="secaoProduto">  
												    <option value="">.. Selecione ..</option>  
												    <c:forEach var="secao" items="${dao2.lista}">  
												       <option value="${secao.descricao}">  
												              ${secao.descricao}  
												       </option>  
												    </c:forEach>  
												</select> 
 
 <input type="submit"  value="BUSCAR"/>
 
 

</form>

a servlet:

public class BuscaProdutoPorSecaoServlet extends HttpServlet{
	public void service(HttpServletRequest request, HttpServletResponse response) {   
					List<Produto> produtos = new ArrayList<Produto>();   
					ProdutoDAO produtoDAO = new ProdutoDAO();         
					produtos = produtoDAO.getListaP(request.getParameter("secaoProduto"));   
					request.setAttribute("produtos", produtos);   
					RequestDispatcher requestDispatcher = request.getRequestDispatcher("/lista_produtos.jsp");   
					try {
						requestDispatcher.forward(request, response);
					} catch (ServletException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}     
}   
}

meu DAO
que faz a lista

public List<Produto> getListaP(String secaoProduto) {
			 try {
			 List<Produto> produtos = new ArrayList<Produto>();
			 PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where  secaoProduto= "+secaoProduto);
			 ResultSet rs = stmt.executeQuery();
			
			 while (rs.next()) {
			 // criando o objeto Produto
			 Produto produto = new Produto();
			 
			 produto.setCodigo(rs.getLong("codigo"));
			 produto.setNumNotaFiscal(rs.getString("numNotaFiscal"));
			 produto.setN_peca(rs.getString("n_peca"));
			 produto.setUnidade_descricao(rs.getString("unidade_descricao"));
			 produto.setDescricao(rs.getString("descricao"));
			 produto.setVlrcompra(rs.getString("vlrcompra"));
			 produto.setTotal(rs.getString("total"));
			 produto.setEstoque(rs.getString("estoque"));
			 produto.setCritico(rs.getString("critico"));
			
			 // montando a data através do Calendar
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("dataCadastro"));
			produto.setDataCadastro(data);
			produto.setSecaoProduto(rs.getString("secaoProduto"));
			produto.setFornecedor(rs.getString("fornecedor"));
			  
            // adicionando o objeto à lista
			 produtos.add(produto);
			 }
			 rs.close();
			 stmt.close();
			 return produtos;
			} catch (SQLException e) {
			throw new RuntimeException(e);
			 }
		}

o erro esta no SQL que retorna aquela msg la de cima…

na tabela do banco existe a coluna secaoProduto

no caso la em cima “rolamento” seria uma secao que esta esta armazenada na minha tabela na coluna secaoProduto;

teria que no caso me retornar todos os produtos que contenham a secao ROLAMENTO.

AJUDA?

4 Respostas

A

leandro.augusto:
estou tendo esse erro na minha aplicacao;

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'rolamento' in 'where clause'

o formulario:

<form action="listaPorSecao" method="POST">
 
 <select name="secaoProduto">  
												    <option value="">.. Selecione ..</option>  
												    <c:forEach var="secao" items="${dao2.lista}">  
												       <option value="${secao.descricao}">  
												              ${secao.descricao}  
												       </option>  
												    </c:forEach>  
												</select> 
 
 <input type="submit"  value="BUSCAR"/>
 
 

</form>

a servlet:

public class BuscaProdutoPorSecaoServlet extends HttpServlet{
	public void service(HttpServletRequest request, HttpServletResponse response) {   
					List<Produto> produtos = new ArrayList<Produto>();   
					ProdutoDAO produtoDAO = new ProdutoDAO();         
					produtos = produtoDAO.getListaP(request.getParameter("secaoProduto"));   
					request.setAttribute("produtos", produtos);   
					RequestDispatcher requestDispatcher = request.getRequestDispatcher("/lista_produtos.jsp");   
					try {
						requestDispatcher.forward(request, response);
					} catch (ServletException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}     
}   
}

meu DAO
que faz a lista

public List<Produto> getListaP(String secaoProduto) {
			 try {
			 List<Produto> produtos = new ArrayList<Produto>();
			 PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where  secaoProduto= "+secaoProduto);
			 ResultSet rs = stmt.executeQuery();
			
			 while (rs.next()) {
			 // criando o objeto Produto
			 Produto produto = new Produto();
			 
			 produto.setCodigo(rs.getLong("codigo"));
			 produto.setNumNotaFiscal(rs.getString("numNotaFiscal"));
			 produto.setN_peca(rs.getString("n_peca"));
			 produto.setUnidade_descricao(rs.getString("unidade_descricao"));
			 produto.setDescricao(rs.getString("descricao"));
			 produto.setVlrcompra(rs.getString("vlrcompra"));
			 produto.setTotal(rs.getString("total"));
			 produto.setEstoque(rs.getString("estoque"));
			 produto.setCritico(rs.getString("critico"));
			
			 // montando a data através do Calendar
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("dataCadastro"));
			produto.setDataCadastro(data);
			produto.setSecaoProduto(rs.getString("secaoProduto"));
			produto.setFornecedor(rs.getString("fornecedor"));
			  
            // adicionando o objeto à lista
			 produtos.add(produto);
			 }
			 rs.close();
			 stmt.close();
			 return produtos;
			} catch (SQLException e) {
			throw new RuntimeException(e);
			 }
		}

o erro esta no SQL que retorna aquela msg la de cima…

na tabela do banco existe a coluna secaoProduto

no caso la em cima “rolamento” seria uma secao que esta esta armazenada na minha tabela na coluna secaoProduto;

teria que no caso me retornar todos os produtos que contenham a secao ROLAMENTO.

AJUDA?

Boa noite!

Esta campo secaoProduto é um alfa? Se for esta faltando os aspas simples, pois da maneira que esta você esta listando os valores de um campo igual ao outro campo (secaoProduto = rolamento) onde rolamento não existe e por isso aparece esta mensagem…

PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where  secaoProduto= ' "+secaoProduto+"'");

faz um teste…

Abraço…

C

Boa noite,
você estar passando parametros que não consta em sua tabela no banco de dados, certifique-se que sua tabela tem os campos e verifica a quantidade de parametros que seu metodo estar setando, e em seguida verifique qual parametros vocÊ estar passando a mais em suas textField.

L

Galera acabei de testar aqui… do jeito que o amigo alxdre.pestan me passou ele nao me mostra mais o erro, porem qdo redireciona para a listagem dos produtos ele nao me retorna nada, ou seja, lista vazia.

deu um print na tabela do mysql:

a Coluna secaoProduto consta no banco sim.

e o select a cima citado:

select * from produto where secaoProduto= "rolamento" funciona como query no banco. e me retorna…

rolamento é um dado existente na coluna secaoProduto do banco. Preciso fazer a listagem filtrando atraves desses dados.
Pois é o que me foi proposto.



L

Galera Agora sim deu certo bem da forma como eu queria gracas a ajuda dos amigos…

qdo eu coloquei assim:

PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where  secaoProduto=  ' "+secaoProduto+"'");

com este espaco na primeira aspas simples - tirou o erro mais nao retornou nada…

PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where  secaoProduto=  '"+secaoProduto+"'");

encostando a aspas simples FILTROU DE BOA…

meio doido neh, mas valeu…

obrigado ai : alxdre.pestana
e ao Cleidson. pela atencao…

Obrigadoooooo!!! Felicidades!!

Criado 17 de outubro de 2011
Ultima resposta 18 de out. de 2011
Respostas 4
Participantes 3