[Java] Inserir campos com máscaras no banco de dados

1 resposta
A

Boa tarde!

Sou novo no mundo da programação, e estou tendo problemas ao inserir campos com máscaras. Eu consigo inserir a máscara e quando testo a aplicação ela já aparece com a máscara perfeitamente. Mas quando eu vou inserir no banco de dados, queria que inserisse na tabela somente os números digitados pelo usuário, e não a data com as barras, traços e etc. Exemplo:

Declarei o campo na aplicação assim:

try { formato_cpf = new MaskFormatter ("###.###.###-##");  }

catch (Exception erro){

JOptionPane.showMessageDialog(null, “Não foi possível criar máscara para o campo CPF: " +

”\n\n" + erro);

}

jftf_cpf = new JFormattedTextField(formato_cpf);

Eu declarei a coluna desse campo no banco de dados como cpf varchar (11);

Ao fazer o insert, eu faço mais ou menos assim:

String instrucao_sql = “insert into tb_pessoa ( cpf ) values ( '” + jftf_cpf.getText() + "’);

Ao fazer a inserção dá erro porque ao invés do sistema inserir somente os números, ele insere também os pontos e traços da máscara.

Estou usando o banco JDBC.

Alguém sabe o que estou fazendo de errado?

1 Resposta

raphaeloneves

Tem algumas formas de fazer. Dentre elas, criar um método private devolvendo o valor do texto “desformatado”.

private String removerMascara(String str){
	return str.replace("-", "").replace(".", "");
}

String instrucao_sql = insert into tb_pessoa ( cpf ) values ( '” + removerMascara(jftf_cpf.getText()) + "’);

Ah, concatenar string no sql não é uma boa prática. Use prepared statements para isso. Evite SQL Injections.

Criado 28 de novembro de 2017
Ultima resposta 28 de nov. de 2017
Respostas 1
Participantes 2