[RESOLVIDO] Dúvida sobre valores em reais no para inserir no banco (oracle)

Blz Pessoal?

Estou fazendo um projeto, e tenho uns campos onde serão digitados valores em reais, e para a formatação deste campo, estou utilizando a classe do link abaixo:

Porém, estou com alguns problemas, aparece o seguinte erro no momento de salvar no banco pela aplicação:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1,05"

No banco (oracle) o tipo de dados para este atributo é Number(8,2)
quando digito no aplicativo o valor, a formatação é feita perfeitamente pela classe, mas da esse erro no momento de gravar no banco, pelo fato deste textfield não possuir apenas números

já tentei fazer umas corversões, jogar o valor do jtextfield em uma variavel, e converter, mas sem sucesso. Atualmente está assim:

//o campo
tvalortit = new JLabel("Valor Titulo:");
tvalortit.setBounds(280, 50, 80, 15);
panel1.add(tvalortit);
valortit = new JNumberFormatField();
valortit.setBounds(370, 47, 100, 23);
valortit.setBackground(Color.YELLOW);
panel1.add(valortit);

//gravar no banco
private void gravar() {
		try {
		String nmtitulo_p = nmtitulo.getText();
		String dtvenc_p = dtvenc.getText();

		double valortitulo_p = Double.parseDouble(valortit.getText()); //aki ja tentei varios tipos de conversões, mas todas sem resultado, apresentando sempre o erro
                CallableStatement cs = conn.prepareCall("{call fin_cpa_gravar(:nmtitulo_p, :dtvenc_p, :valortit_p)}");
		cs.setString(1, nmtitulo_p);
		cs.setString(2, dtvenc_p);
		cs.setDouble(3, valortitulo_p);
                cs.execute();
                } catch (Exception er) {
			System.out.println(er);
		}

//o erro que apresenta:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1,00"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Principal.ContasPagar.salvar2(ContasPagar.java:202)
	at Principal.ContasPagar.campos_obrigatorios(ContasPagar.java:197)
	at Principal.ContasPagar.access$0(ContasPagar.java:190)
	at Principal.ContasPagar$1.actionPerformed(ContasPagar.java:172)

Quem puder me dar uma dica agradeço, preciso que na aplicação o usuário digite o valor e seja apresentado corretamente com a mascara(isso ja esta ok) mas quando gravar, tem que converter para pegar somente os numeros e ser possivel gravar no banco. Obrigado.

Talvez não ajude, mas já tentou colocar o parse aqui?

cs.setDouble(3,  Double.parseDouble(valortitulo_p)); 

[quote=sunsite]Blz Pessoal?

Estou fazendo um projeto, e tenho uns campos onde serão digitados valores em reais, e para a formatação deste campo, estou utilizando a classe do link abaixo:

Porém, estou com alguns problemas, aparece o seguinte erro no momento de salvar no banco pela aplicação:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1,05"

No banco (oracle) o tipo de dados para este atributo é Number(8,2)
quando digito no aplicativo o valor, a formatação é feita perfeitamente pela classe, mas da esse erro no momento de gravar no banco, pelo fato deste textfield não possuir apenas números

já tentei fazer umas corversões, jogar o valor do jtextfield em uma variavel, e converter, mas sem sucesso. Atualmente está assim:

//o campo
tvalortit = new JLabel("Valor Titulo:");
tvalortit.setBounds(280, 50, 80, 15);
panel1.add(tvalortit);
valortit = new JNumberFormatField();
valortit.setBounds(370, 47, 100, 23);
valortit.setBackground(Color.YELLOW);
panel1.add(valortit);

//gravar no banco
private void gravar() {
		try {
		String nmtitulo_p = nmtitulo.getText();
		String dtvenc_p = dtvenc.getText();

		double valortitulo_p = Double.parseDouble(valortit.getText()); //aki ja tentei varios tipos de conversões, mas todas sem resultado, apresentando sempre o erro
                CallableStatement cs = conn.prepareCall("{call fin_cpa_gravar(:nmtitulo_p, :dtvenc_p, :valortit_p)}");
		cs.setString(1, nmtitulo_p);
		cs.setString(2, dtvenc_p);
		cs.setDouble(3, valortitulo_p);
                cs.execute();
                } catch (Exception er) {
			System.out.println(er);
		}

//o erro que apresenta:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1,00"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Principal.ContasPagar.salvar2(ContasPagar.java:202)
	at Principal.ContasPagar.campos_obrigatorios(ContasPagar.java:197)
	at Principal.ContasPagar.access$0(ContasPagar.java:190)
	at Principal.ContasPagar$1.actionPerformed(ContasPagar.java:172)

Quem puder me dar uma dica agradeço, preciso que na aplicação o usuário digite o valor e seja apresentado corretamente com a mascara(isso ja esta ok) mas quando gravar, tem que converter para pegar somente os numeros e ser possivel gravar no banco. Obrigado.

[/quote]

O problema é que o seu valor em String está com vírgula ao invés de ponto. Você não vai poder parsear direto pois no double não existe vírgula…

String valorStr = "1,05"; double valor = Double.parseDouble(valorStr.replace(',', '.'));
Outra solução:

String valorStr = "1,05"; DecimalFormat df = new DecimalFormat("0.00"); double valor = df.parse(valorStr).doubleValue();

Pessoal, obrigado a todos que responderam.

Por fim, para deixar documentado para futuras duvidas sobre esta questao, foi possivel resolver esta situaçao utilizando a classe DecimalFormattedField.
Obti ela no Java Free:
http://javafree.uol.com.br/artigo/884545/Campo-formatado-para-valores-decimais.html

Obrigado pela informação, resolveu meu problema também, coloquei replace(’.’, ‘,’); no campo TextField. ficando assim

String strNovo_estoque= String.valueOf(novo_estoque).replace('.', ',');