Problema com Get e Set [RESOLVIDO]

3 respostas
fabiojpoli

Olá pessoal, esse eh meu primeiro tópico, preciso de uma ajuda, sou novo em java, estou fazendo um set para setar os valores digitados pelo teclado, logo após usando os get para jogar uma sp que possue um insert, o problema eh o seguinte, se jogo o get com o insert na mesma classe, dá tudo certo, insere no BD assim:

public class Principal {

	public void Tela() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
		Scanner sc = new Scanner(System.in);
		Fornecedor fornec = new Fornecedor();
			
		fornec.setCodFunc(1);
		
	    System.out.println("\t Cadastro de Fornecedor\n");
		System.out.println("Razão Social: ");
		
		fornec.setRazaoSocialFornec(sc.next());
		System.out.println("CPF/CNPJ: ");
		String CpfForn = sc.next();
		fornec.setCpfFornec(CpfForn);
		
		System.out.println("Inscricao Estadual: ");
		String InsForn = sc.next();
		fornec.setInsEstadualFornec(InsForn);
		System.out.println("CEP: ");
		String CepForn = sc.next();
		fornec.setCepFornec(CepForn);
		System.out.println("Endereco: ");
		String RuaForn = sc.next();
		fornec.setRuaFornec(RuaForn);
		System.out.println("Bairro: ");
		String BairroForn = sc.next();
		fornec.setBairroFornec(BairroForn);
		System.out.println("Cidade: ");
		String CidForn = sc.next();
		fornec.setCidadeFornec(CidForn);
		System.out.println("Estado: ");
		String EstForn = sc.next();
		fornec.setEstadoFornec(EstForn);
		System.out.println("Telefone: ");
		String TelForn = sc.next();
		fornec.setTelefoneFornec(TelForn);
		System.out.println("Celular: ");
		String CelForn = sc.next();
		fornec.setCelularFornec(CelForn);
		System.out.println("Email: ");
		String EmailForn = sc.next();
		fornec.setEmailFornec(EmailForn);
		System.out.println("País: ");
		String PaisForn = sc.next();
		fornec.setPaisFornec(PaisForn);
		System.out.println("Tipo (Física/Jurídica): ");
		String TipoForn = sc.next();
		fornec.setTipoFornec(TipoForn);
		
		
		Conexao conn = new Conexao();
		
		conn.Conecta();
	    
	  
	    
		String sql = "exec sp_InsereFornec " + fornec.getCodFunc() + ",'" + fornec.getRazaoSocialFornec() + "','" + fornec.getCpfFornec() + "','" + fornec.getInsEstadualFornec() + "','" + fornec.getCepFornec() + "','" + fornec.getRuaFornec() + "','" + fornec.getBairroFornec() + "','" + fornec.getCidadeFornec() + "','" + fornec.getEstadoFornec() + "','" + fornec.getTelefoneFornec() + "','" + fornec.getCelularFornec() + "','" + fornec.getEmailFornec() + "','" +  fornec.getPaisFornec() + "','" + fornec.getTipoFornec() + "'";
		try {
			conn.SQLUpdate(sql);
			System.out.println("Cadastro Incluído com Sucesso!"); 
		} catch (Exception e) {
			e.printStackTrace();  
		}
		conn.Disconecta();
	}
	
	public static void main(String[] args) throws Exception {
		Principal telA1 = new Principal();
		telA1.Tela();
	}

}

Mas quando jogo em outra classe, os get estão ficando com null, assim:

public class Principal {

	public void Tela() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
		Scanner sc = new Scanner(System.in);
		Fornecedor fornec = new Fornecedor();
			
		fornec.setCodFunc(1);
		
	    System.out.println("\t Cadastro de Fornecedor\n");
		System.out.println("Razão Social: ");
		
		fornec.setRazaoSocialFornec(sc.next());
		System.out.println("CPF/CNPJ: ");
		String CpfForn = sc.next();
		fornec.setCpfFornec(CpfForn);
		System.out.println("Inscricao Estadual: ");
		String InsForn = sc.next();
		fornec.setInsEstadualFornec(InsForn);
		System.out.println("CEP: ");
		String CepForn = sc.next();
		fornec.setCepFornec(CepForn);
		System.out.println("Endereco: ");
		String RuaForn = sc.next();
		fornec.setRuaFornec(RuaForn);
		System.out.println("Bairro: ");
		String BairroForn = sc.next();
		fornec.setBairroFornec(BairroForn);
		System.out.println("Cidade: ");
		String CidForn = sc.next();
		fornec.setCidadeFornec(CidForn);
		System.out.println("Estado: ");
		String EstForn = sc.next();
		fornec.setEstadoFornec(EstForn);
		System.out.println("Telefone: ");
		String TelForn = sc.next();
		fornec.setTelefoneFornec(TelForn);
		System.out.println("Celular: ");
		String CelForn = sc.next();
		fornec.setCelularFornec(CelForn);
		System.out.println("Email: ");
		String EmailForn = sc.next();
		fornec.setEmailFornec(EmailForn);
		System.out.println("País: ");
		String PaisForn = sc.next();
		fornec.setPaisFornec(PaisForn);
		System.out.println("Tipo (Física/Jurídica): ");
		String TipoForn = sc.next();
		fornec.setTipoFornec(TipoForn);
	}
	
	public static void main(String[] args) throws Exception {
		Principal telA1 = new Principal();
		telA1.Tela();
		FornecedorAction fornecAction = new FornecedorAction();
		fornecAction.incluir();
	}

}

public class FornecedorAction{
	
	public void incluir() throws Exception {
		Fornecedor fornec = new Fornecedor();
		Conexao conn = new Conexao();
		
		conn.Conecta();
	    String dataAtual = "getdate()";
	    
		String sql = "exec sp_InsereFornec " + fornec.getCodFunc() + "," + dataAtual + ",'" + fornec.getRazaoSocialFornec() + "','" + fornec.getCpfFornec() + "','" + fornec.getInsEstadualFornec() + "','" + fornec.getCepFornec() + "','" + fornec.getRuaFornec() + "','" + fornec.getBairroFornec() + "','" + fornec.getCidadeFornec() + "','" + fornec.getEstadoFornec() + "','" + fornec.getTelefoneFornec() + "','" + fornec.getCelularFornec() + "','" + fornec.getEmailFornec() + "','" +  fornec.getPaisFornec() + "','" + fornec.getTipoFornec() + "'";
		try {
			conn.SQLUpdate(sql);
			System.out.println("Cadastro Incluído com Sucesso!"); 
		} catch (Exception e) {
			e.printStackTrace();  
		}
		conn.Disconecta();
	}
}

Obrigado pela atenção!

3 Respostas

M

Acontece que se tratam de objetos diferentes. No método tela da classe Principal você cria um objeto chamado fornec e usa os setters desse objeto.

No método incluir da classe FornecedorAction você cria OUTRO objeto chamado fornec (que tem seus valores inicializados com null).

Nesse caso, talvez passar um objeto do tipo Fornecedor como parâmetro ao método incluir() resolveria. Algo como:

public void incluir(Fornecedor fornec) {
    Conexao conn = new Conexao();
    // e o resto continua
}
fabiojpoli

marcobiscaro2112:
Acontece que se tratam de objetos diferentes. No método tela da classe Principal você cria um objeto chamado fornec e usa os setters desse objeto.

No método incluir da classe FornecedorAction você cria OUTRO objeto chamado fornec (que tem seus valores inicializados com null).

Nesse caso, talvez passar um objeto do tipo Fornecedor como parâmetro ao método incluir() resolveria. Algo como:

public void incluir(Fornecedor fornec) { Conexao conn = new Conexao(); // e o resto continua }

Blz, deu certo! Só confirmando: daí na classe que seta os valores, devo instanciar um objeto do tipo FornecedorAction e chamar o método passando o objeto que recebeu os valores como abaixo e instanciar somente na main o metodo da classe Principal e não o objeto do tipo FornecedorAction, certo?

Ficou assim:

public class Principal {

	public void Tela() throws Exception {
		Scanner sc = new Scanner(System.in);
		Fornecedor fornec = new Fornecedor();
			
				
	        System.out.println("\t Cadastro de Fornecedor\n");

                        fornec.setCodFunc(1);
		System.out.println("Razão Social: ");
		fornec.setRazaoSocialFornec(sc.next());
		System.out.println("CPF/CNPJ: ");
		String CpfForn = sc.next();
		fornec.setCpfFornec(CpfForn);
		System.out.println("Inscricao Estadual: ");
		String InsForn = sc.next();
		fornec.setInsEstadualFornec(InsForn);
		System.out.println("CEP: ");
		String CepForn = sc.next();
		fornec.setCepFornec(CepForn);
		System.out.println("Endereco: ");
		String RuaForn = sc.next();
		fornec.setRuaFornec(RuaForn);
		System.out.println("Bairro: ");
		String BairroForn = sc.next();
		fornec.setBairroFornec(BairroForn);
		System.out.println("Cidade: ");
		String CidForn = sc.next();
		fornec.setCidadeFornec(CidForn);
		System.out.println("Estado: ");
		String EstForn = sc.next();
		fornec.setEstadoFornec(EstForn);
		System.out.println("Telefone: ");
		String TelForn = sc.next();
		fornec.setTelefoneFornec(TelForn);
		System.out.println("Celular: ");
		String CelForn = sc.next();
		fornec.setCelularFornec(CelForn);
		System.out.println("Email: ");
		String EmailForn = sc.next();
		fornec.setEmailFornec(EmailForn);
		System.out.println("País: ");
		String PaisForn = sc.next();
		fornec.setPaisFornec(PaisForn);
		System.out.println("Tipo (Física/Jurídica): ");
		String TipoForn = sc.next();
		fornec.setTipoFornec(TipoForn);

		FornecedorAction fornecAction = new FornecedorAction();
		fornecAction.incluir(fornec);
	}
	
	public static void main(String[] args) throws Exception {
		Principal telA1 = new Principal();
		telA1.Tela();
	}

}

public class FornecedorAction{
	
	public void incluir(Fornecedor fornec) throws Exception {
		Conexao conn = new Conexao();
		
		conn.Conecta();
	    
		String sql = "exec sp_InsereFornec " + fornec.getCodFunc() + ",'" + fornec.getRazaoSocialFornec() + "','" + fornec.getCpfFornec() + "','" + fornec.getInsEstadualFornec() + "','" + fornec.getCepFornec() + "','" + fornec.getRuaFornec() + "','" + fornec.getBairroFornec() + "','" + fornec.getCidadeFornec() + "','" + fornec.getEstadoFornec() + "','" + fornec.getTelefoneFornec() + "','" + fornec.getCelularFornec() + "','" + fornec.getEmailFornec() + "','" +  fornec.getPaisFornec() + "','" + fornec.getTipoFornec() + "'";
		try {
			conn.SQLUpdate(sql);
			System.out.println("Cadastro Incluído com Sucesso!"); 
		} catch (Exception e) {
			e.printStackTrace();  
		}
		conn.Disconecta();
	}
}

Devo colocar como tópico resolvido ou vc mesmo coloca? como funciona aqui?
Vlw a dica!!! :smiley:

M

Isso mesmo. Com isso você pode informar ao método incluir qual Fornecedor será adicionado ao banco de dados.

Quanto à outra pergunta, coloque você mesmo um [RESOLVIDO] no título do tópico para notificar o pessoal.

Criado 10 de abril de 2009
Ultima resposta 11 de abr. de 2009
Respostas 3
Participantes 2