Remoção de máscara ao inserir no Banco de Dados

6 respostas
red_moskito

Olá pessoal,

Gostaria de uma sugestão.

Criei um MaskFormatter para um JFormattedTextField que vai “pegar” o CPF de um fulano. Quando a pessoa digita o CPF, ele fica formatado na seguinte máscara: “###.###.###-##”.

Ao inserir no banco de dados, eu gostaria de inserir sem os pontos (.) e sem o hífen (-). No entanto, o método getText() do JFormattedTextField pega a String completa, incluindo pontos e hífen.

Alguém tem alguma sugestão de como removê-los antes de inserir no Banco de Dados?

Ou o melhor é inserir com os pontos e hífen mesmo?

Desde já, obrigado!

6 Respostas

M

E ai, beleza?Você tem a opção de utilizar StringBuffer!!

finotti

Se você optar por gravar os dados no banco sem a máscara, pode utilizar esse método:

public String removeMask(String cpf) {

    String str = cpf;

    while (str.indexOf("-") != -1) {
      if (str.indexOf("-") != 0) {
        str = str.substring(0, str.indexOf("-")) +
            str.substring(str.indexOf("-") + 1);
      }
      else {
        str = str.substring(str.indexOf("-") + 1);
      }
    }
    while (str.indexOf(".") != -1) {
      if (str.indexOf(".") != 0) {
        str = str.substring(0, str.indexOf(".")) +
            str.substring(str.indexOf(".") + 1);
      }
      else {
        str = str.substring(str.indexOf(".") + 1);
      }
    }
    return str;
  }

Eu prefiro gravar os dados “sem máscara” no banco.

_fs

Por que vocês não lêem a API antes de sair escovando Strings?
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/MaskFormatter.html#setValueContainsLiteralCharacters(boolean)

A

Cara colega red_moskito, qual banco vc esta usando par agravar ?? Pergunto pois vc pode resolver minha duvida, tentei gravar no access e ele não captura nada, quando eu visualizo no banco, aparece um monte de 000000000
esta formatado para

(##)####-####

Valew

red_moskito

marsola2k:
Cara colega red_moskito, qual banco vc esta usando par agravar ?? Pergunto pois vc pode resolver minha duvida, tentei gravar no access e ele não captura nada, quando eu visualizo no banco, aparece um monte de 000000000
esta formatado para

(##)####-####

Valew

Amigão, tô inserindo em Banco de Dados Firebird 1.5.

A

entendi, agora preciso testar no SQL, pois no access ele nao le a linha e ou seja, nao grava !!!

Criado 11 de agosto de 2005
Ultima resposta 22 de ago. de 2005
Respostas 6
Participantes 5