Bom dia pessoal, estou com o seguinte problema. Tenho o método abaixo:
public ArrayList<Integer> ListarCPF() {
String query;
try {
conn = this.getConexao();
query = "SELECT CPF_CNPJ FROM FRENTE ORDER BY CHAVE";
PreparedStatement stmt = conn.prepareStatement(query);
// executa um select
ResultSet rs = stmt.executeQuery();
String cpfString="";
int n=0;
while (rs.next()) {
arrayCPF.add(rs.getString(1));
}
for(int i=0; i<arrayCPF.size();i++){
if (arrayCPF.get(i) instanceof String){
cpfString = (String) arrayCPF.get(i);
if(cpfString == null) {
cpfString = "0";
}
if (cpfString != null && !"".equals(cpfString)){
cpfString = cpfString.replaceAll("\.|-",""); //retira pontos e traços
n = Integer.parseInt( (String) cpfString);
}
n = Integer.parseInt(cpfString);
ListaCPF.add(n);
}
}
System.out.println("inserção concluída");
for(int i =0; i< ListaCPF.size(); i++){
System.out.println(ListaCPF.get(i));
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException sqlex ) {
sqlex.printStackTrace();
} catch (NumberFormatException e ) {
e.printStackTrace();
}
return ListaCPF;
}
e me retorna o seguinte erro:
java.lang.NumberFormatException: For input string: “03454021383”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at br.gov.adagri.ConexaoMSAccess.ListarCPF(ConexaoMSAccess.java:171)
at br.gov.adagri.ComparacaoDB.main(ComparacaoDB.java:24)
eu preciso comparar 2 bancos. e um dos filtros é o CPF.
porque não deixar cpf como String? Porque a tabela cpf no banco postgre está em bigInt,
enquanto na tabela de ACCESS ela é string… então eu faço um array pra pegar os valores dos cpfs da ACCESS e as comparos com a do postgre, por isso eu precisei converter.
Tem um jeito de comparar mesmo ela sendo string ? Eu ouvi falar em algo como comparator, mas não consegui implementar
alguém poderia me da uma força ? Agradeço a todos.
Eu já vi lugares em que se armazena CPF e/ou CNPJ como um número (tem de ser algo que caiba em um long, porque um int não tem dígitos suficientes). Em outros lugares chegam ao cúmulo de não guardar os dígitos de verificação (isso porque eles podem ser recalculados).
Mas o caso pior é na Caixa. Lá há alguns sistemas onde algumas tabelas contém um único campo, tanto para o CPF como para o CNPJ (tudo bem), mas se esqueceram de deixar um campo para indicar se esse número é CPF ou CNPJ. Argh