Dúvidas no Struts

7 respostas
V

Bom dia a todos,

Estou com um problema no meu DAO quando tento fazer uma associação e uma desassociação.
Quando vou fazer a associação ele esta me dando o seguinte erro quando vou fazer o insert:
Exception: java.lang.NumberFormatException: For input string: “”, na tabela os meus campos são inteiros, no método pego esses valores como String e transformo para “int” para gravar na tabela.

Agradeço desde já a ajuda dos senhores(as).

Vitor

public boolean associar(CadPDVFusaoForm pdvFusaoForm) throws IOException{		
			
		try{
			System.out.println("CadPDVFusaoDAO: Entrou CadPDVFusaoDAO Associar.");
			System.out.println(Utilitario.USUARIO);
			System.out.println(getUtilitarioDAO().getdataHora());
			
			System.out.println("CadPDVFusaoDAO: Antes da conexao.");
			Connection con = getConnection();			
			
			int linhas = 0;			
			
			//pstm = con.prepareStatement("UPDATE tblcanalvenda SET sNomeCanalVenda = ?, naoUsarNoRAA = ? where nIdCanalVenda = ?");
			
			//Exclui os PDV´s da Tabela tblDEALER_FUSAO
			
			/*pstm = con.prepareStatement(" DELETE FROM tblDEALER_FUSAO " +
										" WHERE nidaregiao = '" + pdvFusaoForm.getRegiao() + "'" +
										" AND pdv_filho = '" + pdvFusaoForm.getCodPDVFilho() + "'" +
										" AND sidagentevenda = '" + pdvFusaoForm.getCodPDVPai() + "'");*/
			
			String sql = " DELETE FROM tblDEALER_FUSAO " +
						 " WHERE nidregiao = '" + pdvFusaoForm.getRegiao() + "'" +
						 " AND pdv_filho = '" + pdvFusaoForm.getCodPDVFilho() + "'" +
						 " AND sidagentevenda = '" + pdvFusaoForm.getCodPDVPai() + "'";
			  
			System.out.println("CadPDVFusaoDAO: Antes da query de Exclusão");
			
			pstm = con.prepareStatement(sql);
			
			System.out.println("SQL: " + sql);
			System.out.println("Regiao: " + pdvFusaoForm.getRegiao());
			System.out.println("Filho: " + pdvFusaoForm.getCodPDVFilho());
			System.out.println("Pai: " + pdvFusaoForm.getCodPDVPai());			
			
			linhas = pstm.executeUpdate();
			System.out.println("CadPDVFusaoDAO: Excluiu " + linhas + " linha.");
			
			//Insere os PDV´s na tabela tblDEALER_FUSAO
			String squery = " INSERT INTO tblDEALER_FUSAO" +
						 	" (nidregiao,sidagentevenda,pdv_filho) " +
						 	" VALUES (?,?,?)";
			
			pstm = con.prepareStatement(squery);
			
			pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getRegiao()));
			pstm.setInt(2, Integer.parseInt(pdvFusaoForm.getCodPDVFilho()));
			pstm.setInt(3, Integer.parseInt(pdvFusaoForm.getCodPDVPai()));						
									
			System.out.println("squery: " + squery);
			System.out.println("Regiao: " + pdvFusaoForm.getRegiao());
			System.out.println("Filho: " + pdvFusaoForm.getCodPDVFilho());
			System.out.println("Pai: " + pdvFusaoForm.getCodPDVPai());
			
			linhas = pstm.executeUpdate();
			System.out.println("Inseriu " + linhas + " linha.");
			
			//Atualiza o Código do Pai na Tabela tblAGENTECANALVENDA
			pstm = con.prepareStatement(" UPDATE tblAGENTECANALVENDA " +
										" SET CODIGO_UNIFICADO = ? " +
										" WHERE NIDREGIAO = ? " +
										" AND sidagentevenda = ? ");
			
			pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getCodRedePai()));
			pstm.setInt(2, Integer.parseInt(pdvFusaoForm.getRegiao()));
			pstm.setInt(3, Integer.parseInt(pdvFusaoForm.getCodPDVPai()));
			
			linhas = pstm.executeUpdate();
			System.out.println("Atualizou codigo unificado" + linhas + " linha.");
			
			//Atualiza o Código do Filho na Tabela tblAGENTECANALVENDA
			pstm = con.prepareStatement(" UPDATE tblAGENTECANALVENDA " +
										" SET pdv_filho = ? " +
										" WHERE NIDREGIAO = ? " +
										" AND sidagentevenda = ? ");
			
			pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getCodPDVFilho()));
			pstm.setInt(2, Integer.parseInt(pdvFusaoForm.getRegiao()));
			pstm.setInt(3, Integer.parseInt(pdvFusaoForm.getCodPDVPai()));
			
			linhas = pstm.executeUpdate();
			System.out.println("Atualizou pdv_filho " + linhas + " linha.");
			
			}catch(SQLException sqlException){
				System.out.println("sqlException: "+ sqlException);
			}catch(Exception e){
				System.out.println("Exception: "+ e);
			}finally{
				System.out.println("CadPDVFusaoDAO: Fechando conexão.");
				rsClose();
				pstmClose();
				close(con);
			}
		return true;
	}
	
	public boolean desassociar(CadPDVFusaoForm pdvFusaoForm) throws IOException{
		
		try{
			System.out.println("CadPDVFusaoDAO: Entrou CadPDVFusaoDAO Desassociar.");
			System.out.println(Utilitario.USUARIO);
			System.out.println(getUtilitarioDAO().getdataHora());
			
			System.out.println("CadPDVFusaoDAO: Antes da conexao.");
			Connection con = getConnection();			
			
			int linhas = 0;
			//int descPDVPai = 0; 
						
			//for(int i = 0;i < descPDVPai; i++){
				
				//Exclui os PDV´s da Tabela tblDEALER_FUSAO
				
				/*pstm = con.prepareStatement(" DELETE FROM tblDEALER_FUSAO " +
				" WHERE nidregiao = ? " +
				" AND pdv_filho = ? " +
				" AND sidagentevenda = ? ");*/
			
				String sql = " DELETE FROM tblDEALER_FUSAO " +
							   " WHERE nidregiao = '" + pdvFusaoForm.getRegiao() + "'";	
				
				if(!pdvFusaoForm.getCodPDVFilho().equals("") || pdvFusaoForm.getCodPDVFilho() != null){
					sql = sql + " AND pdv_filho = '" + pdvFusaoForm.getCodPDVFilho() + "'";				
				}
				if(!pdvFusaoForm.getCodPDVPai().equals("") || pdvFusaoForm.getCodPDVPai() != null){
					sql = sql + " AND sidagentevenda = '" + pdvFusaoForm.getCodPDVPai() + "'";				
				}
				
				pstm = con.prepareStatement(sql);
				
				//pstm.setString(1, pdvFusaoForm.getRegiao());
				//pstm.setString(2, pdvFusaoForm.getCodPDVFilho());
				//pstm.setString(3, pdvFusaoForm.getCodPDVPai());
				
				System.out.println("Regiao: " + pdvFusaoForm.getRegiao());
				System.out.println("Filho: " + pdvFusaoForm.getCodPDVFilho());
				System.out.println("Pai: " + pdvFusaoForm.getCodPDVPai());
								
				System.out.println("CadPDVFusaoDAO: Antes da query de Exclusão");
				
				System.out.println("SQL: " + sql);
				
				linhas = pstm.executeUpdate();
				System.out.println("CadPDVFusaoDAO: Excluiu " + linhas + " linha.");
				
				//Atualiza o Código do Pai como Vazio na Tabela tblAGENTECANALVENDA
				pstm = con.prepareStatement(" UPDATE tblAGENTECANALVENDA " +
											" SET CODIGO_UNIFICADO = '' " +
											" WHERE NIDREGIAO = ? " +
											" AND sidagentevenda = ? ");
				
				//pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getCodRedePai()));
				pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getRegiao()));
				pstm.setInt(2, Integer.parseInt(pdvFusaoForm.getCodPDVPai()));
				
				System.out.println("CadPDVFusaoDAO: Antes da query de Alterar codPai");
				
				linhas = pstm.executeUpdate();
				System.out.println("Atualiza codigo unificado como vazio " + linhas + " linha.");
				
				//Atualiza o Código do Filho na Tabela tblAGENTECANALVENDA
				pstm = con.prepareStatement(" UPDATE tblAGENTECANALVENDA " +
											" SET pdv_filho = '' " +
											" WHERE NIDREGIAO = ? " +
											" AND sidagentevenda = ? ");
				
				//pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getCodPDVFilho()));
				pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getRegiao()));
				pstm.setInt(2, Integer.parseInt(pdvFusaoForm.getCodPDVPai()));
				
				System.out.println("CadPDVFusaoDAO: Antes da query de Alterar pdvFilho");
				
				linhas = pstm.executeUpdate();
				System.out.println("Atualiza pdv_filho como vazio " + linhas + " linha.");
				
			//}	//Final do For		
			}catch(SQLException sqlException){
				System.out.println("sqlException: "+ sqlException);
			}catch(Exception e){
				System.out.println("Exception: "+ e);
			}finally{
				System.out.println("CadPDVFusaoDAO: Fechando conexão.");
				rsClose();
				pstmClose();
				close(con);
			}
		return true;
	}
}

7 Respostas

V

Mas aí q tá, não necessariamente todos os campos do meu formulário vão ser preenchidos, então provavelmente esta acontecendo isso de vir uma String nula. Mas no meu método estou passando o form, então teria fazer de uma outra maneira, vc tem alguma sugestão?

Muito obrigado.

Vitor

fiaux

Valida o preenchimento antes de salvar.

edilson_x

Vc esta usando annotation?

se sim verifica a anotação @Validator

vai dar erro sempre que um desses campos não estiver preenchido

fiaux

Se estiver usando annotation, pode usar @RequiredFieldValidator.

V

Não estou usando annotation, mas acho q vou seguir a dica do colega acima para validar os campos.
Vou colocar um “IF” e fazer uma comparação para ver se vai funcionar.

Obrigado mais uma vez pela colaboração.

Vitor

V

Galera,

Agora usei a seguinte comparação nos “IF´s”.
Mas agora ele me deu o seguinte erro: sqlException: java.sql.SQLException: ORA-01008: not all variables bound
Agora mesmo q viajei no erro. Estou no desespero. rs

Mais uma vez agradeço a ajuda de todos.

//Insere os PDV´s na tabela tblDEALER_FUSAO
			String squery = " INSERT INTO tblDEALER_FUSAO" +
						 	" (nidregiao,sidagentevenda,pdv_filho) " +
						 	" VALUES (?,?,?)";
			
			pstm = con.prepareStatement(squery);
			
			if(pdvFusaoForm.getRegiao().equals("") || pdvFusaoForm.getRegiao()== null){
				pstm.setInt(1, Integer.parseInt(pdvFusaoForm.getRegiao()));
			}
			if(pdvFusaoForm.getCodPDVFilho().equals("") || pdvFusaoForm.getCodPDVFilho()== null){
				pstm.setInt(2, Integer.parseInt(pdvFusaoForm.getCodPDVFilho()));				
			}
			if(pdvFusaoForm.getCodPDVPai().equals("") || pdvFusaoForm.getCodPDVPai()== null){
				pstm.setInt(3, Integer.parseInt(pdvFusaoForm.getCodPDVPai()));
			}
									
			System.out.println("squery: " + squery);
			System.out.println("Regiao: " + pdvFusaoForm.getRegiao());
			System.out.println("Filho: " + pdvFusaoForm.getCodPDVFilho());
			System.out.println("Pai: " + pdvFusaoForm.getCodPDVPai());
			
			linhas = pstm.executeUpdate();
			System.out.println("Inseriu " + linhas + " linha.");
I

Acho que vc esta querendo conveter para inteiro alguma String nula !

Criado 12 de maio de 2008
Ultima resposta 12 de mai. de 2008
Respostas 7
Participantes 4