Ajuda passar o codigo para o SQL

4 respostas
leandro.augusto

tenho este metodo abaixo q atualiza o estoque da minha aplicacao:

try {
			 
				Connection connection =  new ConnectionFactory().getConnection();
					
						
				String sql = "update produto, b_estoque  set  produto.estoque =(produto.estoque - b_estoque.quantidade), produto.total = (produto.total - b_estoque.total_saida) where produto.descricao = '"+desc_produto+"'"+"and b_estoque.codigo ='"+codigo+"'" ; //PASSAR ESTE CODIGO AQUI 

				PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
			   
				stmt.execute();
												
				stmt.close();
				
	            System.out.println("descricao é   " + desc_produto);
				
				

			 } catch (Exception e) {
			 //out.println("Erro ao dar baixa no estoque" + e);
			 return; //para a execução do método
			 }
		
	 
		 out.println( "baixa em estoque efetuada com sucesso ...!");
	
	 }

se eu tirar o "+"and b_estoque.codigo ='"+codigo+"'" ; ele atualiza e faz as baixas porem esta pegando o primeiro item cadastrado na lista do banco, independente de qual seja.

executei a Query no mysql passando o codigo, ex … and b_estoque.codigo = 35. Faz a atualizacao de boa…

como passar esse codigo sendo que na minha servlet nao pega o codigo como request, pois é AUTOINCREMENT no banco.

// busca o writer
	 PrintWriter out = response.getWriter();
	
	 // buscando os parâmetros no request
	  String desc =null;
	 
	 String desc_produto = request.getParameter("desc_produto" );
	 
	 String quantidade = request.getParameter("quantidade");
	 
	 String dataEmTexto = request.getParameter("data_baixa");
	 Calendar data_baixa = null;
	 
	 try {
		 Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
		 data_baixa = Calendar.getInstance();
		 data_baixa.setTime(date);
		 	 
		 } catch (ParseException e) {
		 out.println("Erro de conversão da data" + e);
		 return; //para a execução do método
		 }
	 
		 String total_saida = request.getParameter("total_saida");
	
		 // monta um objeto unidade
	 BaixaEstoque baixaestoque = new BaixaEstoque();
	 baixaestoque.setDesc_produto(desc_produto);
	 baixaestoque.setQuantidade(quantidade);
	 baixaestoque.setData_baixa(data_baixa);
	 baixaestoque.setTotal_saida(total_saida);
		 
	 // salva unidade
	 BaixaEstoqueDAO dao = new  BaixaEstoqueDAO();
	 
	 dao.verificaEstoque(desc = request.getParameter("desc_produto"));
				
 
	 dao.adiciona(baixaestoque);

a sequencia fica assim:

usuario entra com os dados da “baixa em estoque”;

um metodo meu vai la e faz a verficacao da qtde

se tudo OK, ele adiciona a baixa,

logo apos adicionar esta baixa ele tem q atualiza (vide metodo la em cima)

alguem ajuda?

4 Respostas

Rodrigo_Sasaki

se você tiver decrições iguais na base você terá sérios problemas…

você poderia tentar recuperar o registro da base pra depois gravar usando o código.

não sei bem como você está fazendo e os registros da sua base.

Obs: procure não concaternar sua query desse jeito, se ja está usando PreparedStatement, use tudo o que ele tem pra te oferecer hehehe

Ex:

String descricaoParam = request.getParameter("descricao");

String sql = "SELECT * FROM tabela where descricao = ?";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString(1,descricaoParam);

stmt.execute();
stmt.close();

assim ele altera a “?” da query pelo parametro que você passar

leandro.augusto

pois é, passando nesta tabela em que precisa ser feita as atualizacoes ira possuir sim dados com o mesmo “nome”, porem fazendo N testes aqui se eu conseguir passar esse codigo ele acerta na mosta a atualizacao. pois o codigo é a chave primaria de cada item.

ex: codigo / descricao / data da baixa / total saida
35 rolamento 10-10-2010 30.00
37 rolamento 12-10-2010 20.00

lembrando que tudo o que eu passei acima esta na mesma servlet…

nao consigo pegar esse codigo. e passar a query…

nos meus “DAOS” utilizo as querys assim com vc disse, ou pelo menos esta parecido…

String sql = "insert into b_estoque(desc_produto,quantidade, data_baixa, total_saida) values (?,?,?,?)";

:slight_smile:
se essa gambiarrinha ai funcionar eu agradeco… trabalho de TCC isso ai…

leandro.augusto

digaoneves:
se você tiver decrições iguais na base você terá sérios problemas…

você poderia tentar recuperar o registro da base pra depois gravar usando o código.

não sei bem como você está fazendo e os registros da sua base.

Obs: procure não concaternar sua query desse jeito, se ja está usando PreparedStatement, use tudo o que ele tem pra te oferecer hehehe

Ex:

String descricaoParam = request.getParameter("descricao");

String sql = "SELECT * FROM tabela where descricao = ?";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString(1,descricaoParam);

stmt.execute();
stmt.close();

assim ele altera a “?” da query pelo parametro que você passar

como recuperar dentro da servlet?

leandro.augusto

???

Criado 24 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 4
Participantes 2