Como Iterar HashMap para fazer insert dos dados no Banco de Dados

3 respostas
I

Bom dia amigos,

Gostaria de saber como faço para Iterar um HashMap na classe DAO para fazer os insert dos dados no Banco de Dados:

Classe Action onde populo o HashMap e depois seto ele para a classe DAO fazer os inserts, mas não consigo Iterar para fazer o insert dos dados no banco. como posso fazer isto?

Tenho uma JSP que tem um Javascript que adiciona linhas no formulario dinamicamente, ai na Action eu recupero todos os parametros e jogo para um HashMap… Estou usando Struts 1.3.8.

Método da classe EstoqueAction:

public ActionForward incluirProdutoEstoquePorNF(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		System.out.println("*** EstoqueAction: incluirProdutoEstoquePorNF ***");
		
		EstoqueDAO estoqueDAO = new EstoqueDAO();
		ActionMessages messages = new ActionMessages();
		EstoqueVO estoqueForm = (EstoqueVO) form;
		String opcao = request.getParameter("opcao");
		estoqueForm.setOpcao(opcao);

		//ArrayList <EstoqueVO> lEstoqueProduto = new ArrayList<EstoqueVO>();
		
		if (estoqueForm.getOpcao().equals("CADASTRAR")){
		
			System.out.println("Entrou no IF...");
						
			//HttpServletRequest request = ...;   
			EstoqueVO estoqueVO = new EstoqueVO();   
		    HashMap map = new HashMap();   
		    Enumeration names = request.getParameterNames();   
			    
		    	while (names.hasMoreElements()) {   
			      
			    	String name = (String) names.nextElement();   
			       	map.put(name, request.getParameterValues(name));
			    }   
			 
			//BeanUtils.populate(estoqueVO, map);
			//request.setAttribute("estoqueForm", estoqueVO);
		       		    
		    System.out.println("Map size: " + map.size());
		    		    		    			
			int flag = estoqueDAO.incluirProdutoEstoquePorNF(map);
				 
				 if (flag > 0){
					 
					 messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("sucesso.fornecedorIncluidoComSucesso"));
					 saveMessages(request, messages);
					 
				 }else{
					 System.out.println("INCLUSÃO DE ITEM DE PRODUTO NÃO INCLUSA!");
				 }
				 
				 				 
			}
		
		//request.setAttribute("estoqueForm", estoqueVO);
		request.setAttribute("opcao", estoqueForm.getOpcao());
		return mapping.findForward(ConstantsUtil.FWD_SUCESSO);
			
	}

Metodo da classe EstoqueDAO:

public int incluirProdutoEstoquePorNF(HashMap map) throws SQLException {
		
		System.out.println("*** EstoqueDAO: incluirProdutoEstoquePorNF ***");
		
		int flag = 0;
		
		System.out.println("map no DAO:" + map.size());
		
		try {
			String query = 		"INSERT INTO " +
					"				TBL_MOVIMENTACAO_ESTOQUE (" +
									" COD_PRODUTO, " +
									" QTD_ITEM) " +
									" VALUES(" +
								
									map.size();
									//map.getItemEstoqueVO().getCodProduto() 	+"','"+
									//map.getItemEstoqueVO().getQtdItem() 	+"')";
									
				
			
			xConn = new XConnection();
			flag = xConn.atualiza(query);
						
			// flag = 1 (INSERT OK) 
			if(flag == 1) {
				// Obter id gerado automaticamente por AUTO_INCREMENT
				query = "SELECT LAST_INSERT_ID()";
				xConn.rs = xConn.seleciona(query);
				xConn.rs.first();
				flag = xConn.rs.getInt(1);
			}
			xConn.fechaConexao();
			return flag;

		} catch(SQLException e) {
			System.out.println("ERROR incluirProdutoEstoquePorNF: "+e);
			xConn.fechaConexao();
			return flag;			
		} catch(Exception e) {
			System.out.println("ERROR incluirProdutoEstoquePorNF: "+e);
			xConn.fechaConexao();
			return flag;
		}	
		
	}

Vlw amigos…

Vlw…

3 Respostas

thiago.correa

Segue um exemplo

Map<String, String> map = new HashMap<String, String>();
        map.put("1","opa 1");
        map.put("2","opa 2");
        map.put("3","opa 3");
        map.put("4","opa 4");
        map.put("5","opa 5");
        
        for (String s : map.values() ) {
            System.out.println(s);
        }
        
        for (String s : map.keySet()) {
            System.out.println(s);
        }
I

Amigo thiago.correa, entendi mais ou menos, como poderia aplicar seu exemplo no metodo de Insert no BD??

A minha esta em mapear os valores que estao no map para fazer os inserts dos dados nas colunas corretas do BD… Como poderia fazer isto??

Digo isto, porq o map é populado com varios parametros, tipo:

codigo1=100&qtd1=200&codigo2=300&qtd2=400&method=incluirProdutoEstoquePorNF&opcao=CADASTRAR

Na tabela do banco tem as colunas codigo e qtd… Como vou mapear os valores dos parametros codigo1 e qtd1 para gravar corretamente no banco… ??

Muito Obrigado…

I

Alguém tem alguma sugestão?

Vlw…

Criado 11 de fevereiro de 2009
Ultima resposta 11 de fev. de 2009
Respostas 3
Participantes 2