Erro na conversão com String.format?

Salve galera

seguinte, estou montando uma string sql usando String.format, o problema é que tenho um valor decimal e não sei como fazer ele manter esse valor decimal pq se uso %.2f ele usa float assim ele usa virgula e nao ponto.

vejam.

String valor = txtfield.getText();
double valorDecimal = Double.valueOf(valor.replace(",", ".");
String sql = String.format("INSERT INTO tabela (valor) VALUES %.2f", valorDecimal);

Se eu mando executar esse sql da erro, pq no BD eu tenho o campo valor do tipo float que precisa receber campos com valor decimal 2.22 e quando uso %f ae na string sql o valor fica com virgula 2,22. Como fazer para o String.format manter o ponto decimal e assim inserir no BD normalmente ???

olá, não use o string format para isso, é melhor usar o PreparedStatement dessa forma.



public void adiciona(Contato contato) throws SQLException {
// prepared statement para inserção
PreparedStatement stmt = this.connection.prepareStatement("insert into
contatos (nome,email,endereco) values (?, ?, ?)");
// seta os valores
stmt.setString(1,contato.getNome());
stmt.setString(2,contato.getEmail());
stmt.setString(3,contato.getEndereco());
// executa
stmt.execute();
stmt.close();
}
}

Retirei esse código a apostila fj 21 da caelum http://www.caelum.com.br/apostilas/

espero ter ajudado flw

sim sim, eu tbm uso dessa maneira…mas gostaria de saber se com String.format naum tem como manter os decimais.

obrigado.

Use a assinatura do format que aceita um Locale. E passe como local os EUA:

Mas, para banco de dados, use o PreparedStatement, como o colega sugeriu, não o format.