Erro no campo salario ao salvar no banco de dados mysql

Bom dia

Estou desenvolvendo uma aplicação java desktop que salva no BD mysql.

Está salvando normal, porém, o campo salário não salva. Eu coloquei uma mascara no campo e qdo peço para salvar no banco, ele vira zerado la.
o tipo do campo no BD eh decimal e no programa eh float.

podem me ajudar?

vlw!!!

cara,

sua mascara deve estar assim ne, por exemplo 1.532,50, qdo vc passar para o float, vc tem que ter algo assim 1532.50, será que nao é isso?

t+

minha mascara esta assim…

“R$ ####,##”

agora q estou pensando… qdo vc usa mascara… ele joga ela no BD tb… pq se for… da dando problema nisso… :s

eu tirei o R$… e deixei ####.## e depois ####,##

nenhum dos 2 funcionam

vc tem que converter essa sua String em float, por isso que está ocorrendo o erro.

t+

posta seu codigo que vc ta salvando no banco

t+

segue o codigo… grato!

//Botão salvar

 //A função de String trim() é uma função que retira os espaços do início e do final da String.
        String nome   = txt_nome.getText().trim();
        String ender  = txt_endereco.getText().trim();
        String cpf    = txt_cpf.getText().trim();
        String fone   = txt_fone.getText().trim();
        String cidade = txt_cidade.getText().trim();
        String uf     = cb_uf.getSelectedItem().toString().trim();
        String cargo  = cb_cargos.getSelectedItem().toString().trim();
        String salario= txt_salario.getText().trim();
        if ((nome.equals("")) || (ender.equals("")) || (cpf.equals("")) ||
            (fone.equals("")) || (cidade.equals("")) || (uf.equals("")) ||
            (cargo.equals("")) || (uf.equals("")))
        {
            JOptionPane.showMessageDialog(rootPane, "Algum campo está em branco!");
        }
        else
        {
            Funcionarios funcionarios = new Funcionarios();
            funcionarios.setNome(nome);
            funcionarios.setCpf(cpf);
            funcionarios.setEndereco(ender);
            funcionarios.setCidade(cidade);
            funcionarios.setFone(fone);
            funcionarios.setUf(uf);
            funcionarios.setCargo(cargo);
            funcionarios.setSalario(TOP_ALIGNMENT);

            FuncionariosDAO dao = new FuncionariosDAO();
            try
            {
                dao.incluir(funcionarios);

            }
            catch(SQLException e)
            {
                JOptionPane.showMessageDialog(rootPane, "Aconteceu o erro" + e.getMessage());
                System.out.println();
            }

        travar_campos();
        abre_navegacao();
        }
        
        
        
//Classe salvar funcionarios

package hotel.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import hotel.dominio.Funcionarios;
/**
 *
 * @author raphael
 */
public class FuncionariosDAO {
    private Connection con;

    public FuncionariosDAO()
    {
        try
        {
            con = new conexao().getConnection();

        }
        catch(SQLException ex)
        {
            System.out.println("Aconteceu o erro: "+ex.getMessage());
        }
    }
    public void incluir(Funcionarios funcionario) throws SQLException
    {
        String sql = "INSERT INTO Funcionarios"
                +"(cod_func,nome,cargo,salario,endereco,cidade,uf,fone,cpf)"
                +"VALUES(?,?,?,?,?,?,?,?,?)";
        try
        {
            //prepara o statement para a inserção de um novo cliente
            PreparedStatement stmt = this.con.prepareStatement(sql);
            //definir os valores de acordo com o passado objeto cliente
            stmt.setInt(1, funcionario.getCod_func());
            stmt.setString(2, funcionario.getNome());
            stmt.setString(3, funcionario.getCargo());
            stmt.setFloat(4, funcionario.getSalario());
            stmt.setString(5, funcionario.getEndereco());
            stmt.setString(6, funcionario.getCidade());
            stmt.setString(7, funcionario.getUf());
            stmt.setString(8, funcionario.getFone());
            stmt.setString(9, funcionario.getCpf());

            //executa o script sql
            stmt.execute();
            //fecha o BD
            stmt.close();

        }
        catch(SQLException ex)
        {
            throw new RuntimeException(ex);
        }
    }
    public void alterar(Funcionarios fun) throws SQLException
    {
        String sql = "UPDATE Funcionarios"
                +"set nome=?, cargo=?, salario=?, endereco=?, uf=?, fone=?, cpf=?"
                +"WHERE cod_fun=?";
        try
        {
            //prepara o statement para a alteração
            PreparedStatement stmt = this.con.prepareStatement(sql);
            //seta os valores
            stmt.setString(1, fun.getNome());
            stmt.setString(2, fun.getCargo());
            stmt.setFloat(3, fun.getSalario());
            stmt.setString(4, fun.getEndereco());
            stmt.setString(5, fun.getCidade());
            stmt.setString(6, fun.getUf());
            stmt.setString(7, fun.getFone());
            stmt.setString(8, fun.getCpf());
            stmt.setInt(9, fun.getCod_func());
            //executa o update
            stmt.executeUpdate();
            stmt.close();
        }
        catch(SQLException e)
        {
            throw new RuntimeException(e);
        }
    }
    public void excluir(int cod_fun) throws SQLException
    {
        String sql = "DELETE FROM Funcionarios"
                +"WHERE cod_fun=?";
        try
        {
            //prepara o statement para excluir
            PreparedStatement stmt = this.con.prepareStatement(sql);
            //seta os valores
            stmt.setInt(1, cod_fun);
            //executa
            stmt.executeUpdate();
            stmt.close();
        }
        catch(SQLException e)
        {
            throw new RuntimeException(e);
        }
    }
     public Funcionarios buscar(int cod_fun) throws SQLException
    {
        Funcionarios funEncontrado = new Funcionarios();
        ResultSet rs = null;
        String sql = "SELECT * FROM Funcionarios"
                +"WHERE cod_fun="+cod_fun;
        PreparedStatement stmt = null;

        try
        {
            //prepara o statement para busca
            stmt = this.con.prepareStatement(sql);
            //executa
            rs = stmt.executeQuery(sql);
            if(rs.next())
            {
                funEncontrado.setCod_func(rs.getInt("cod_fun"));
                funEncontrado.setNome(rs.getString("nome"));
                funEncontrado.setCargo(rs.getString("cargo"));
                funEncontrado.setSalario(rs.getFloat("salario"));
                funEncontrado.setEndereco(rs.getString("endereco"));
                funEncontrado.setCidade(rs.getString("cidade"));
                funEncontrado.setUf(rs.getString("uf"));
                funEncontrado.setFone(rs.getString("fone"));
                funEncontrado.setCpf(rs.getString("cpf"));
            }
            return funEncontrado;
        }
        catch(SQLException e)
        {
            throw new RuntimeException();
        }

    }
      public ArrayList<Funcionarios>buscarTodos() throws SQLException
    {
        ArrayList<Funcionarios> dados = new ArrayList<Funcionarios>();
        ResultSet rs = null;
        String sql = "SELECT * FROM Funcionarios";
        PreparedStatement stmt = null;

        try
        {
            stmt = this.con.prepareStatement(sql);
            rs = stmt.executeQuery(sql);
            while(rs.next())
            {
                Funcionarios funEncontrado = new Funcionarios();
                funEncontrado.setCod_func(rs.getInt("cod_fun"));
                funEncontrado.setNome(rs.getString("nome"));
                funEncontrado.setCargo(rs.getString("cargo"));
                funEncontrado.setSalario(rs.getFloat("salario"));
                funEncontrado.setEndereco(rs.getString("endereco"));
                funEncontrado.setCidade(rs.getString("cidade"));
                funEncontrado.setUf(rs.getString("uf"));
                funEncontrado.setFone(rs.getString("fone"));
                funEncontrado.setCpf(rs.getString("cpf"));
                dados.add(funEncontrado);
            }
            rs.close();
            this.con.close();
        }
        catch(SQLException e)
        {
            throw new RuntimeException(e);
        }
        return dados;
    }

}

//classe funcionarios


package hotel.dominio;

/**
 *
 * @author raphael
 */
public class Funcionarios {
    private int cod_func;
    private String nome;
    private String cargo;
    private float salario;
    private String endereco;
    private String cidade;
    private String uf;
    private String fone;
    private String cpf;

    /**
     * @return the cod_func
     */
    public int getCod_func() {
        return cod_func;
    }

    /**
     * @param cod_func the cod_func to set
     */
    public void setCod_func(int cod_func) {
        this.cod_func = cod_func;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the cargo
     */
    public String getCargo() {
        return cargo;
    }

    /**
     * @param cargo the cargo to set
     */
    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    /**
     * @return the salario
     */
    public float getSalario() {
        return salario;
    }

    /**
     * @param salario the salario to set
     */
    public void setSalario(float salario) {
        this.salario = salario;
    }

    /**
     * @return the endereco
     */
    public String getEndereco() {
        return endereco;
    }

    /**
     * @param endereco the endereco to set
     */
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    /**
     * @return the cidade
     */
    public String getCidade() {
        return cidade;
    }

    /**
     * @param cidade the cidade to set
     */
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    /**
     * @return the uf
     */
    public String getUf() {
        return uf;
    }

    /**
     * @param uf the uf to set
     */
    public void setUf(String uf) {
        this.uf = uf;
    }

    /**
     * @return the fone
     */
    public String getFone() {
        return fone;
    }

    /**
     * @param fone the fone to set
     */
    public void setFone(String fone) {
        this.fone = fone;
    }

    /**
     * @return the cpf
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }



}

cara,

pq vc colocou isso assim

funcionarios.setSalario(TOP_ALIGNMENT); 

vc ja tentou colocar seu atributo salario como double?

t+

eu estava reparando no meu codigo e no botao salvar onde esta " funcionarios.setSalario(TOP_ALIGNMENT); "

qdo eu coloco salario no lugar de TOP_ALIGNMENT… O netbeans pede pra criar um metodo setSalario(java.lang.String) em hotel.dominio.Funcionarios

qdo eu crio… ele cria um método na classe Funcionarios e fica assim:

publib void setSalario(String salario){
      throw new UnsupportedOperationException("Not yet implemented");
}

[quote=alissonvla]cara,

pq vc colocou isso assim

funcionarios.setSalario(TOP_ALIGNMENT); 

vc ja tentou colocar seu atributo salario como double?

t+[/quote]

o netbeans deu sozinho…

rsrs…

ta ai o erro, ai que vc vai ter que fazer a conversão do maskinput para float.

t+

putz… cara… como faz isso? :?

como ta chegando sua getText do seu maskinput? posta um exemplo

eu não sei se foi isso q vc pediu…
eh assim q esta configurado a minha mascara

código pré-criação

try
        {
            formatosal = new MaskFormatter("#####,##");
        }   
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, "Não foi possível setar a máscara"+erro);
        }

criação de código personalizado

txt_salario = new JFormattedTextField(formatosal);

quero saber o que está vindo aqui

String salario= txt_salario.getText().trim(); 

t+

cara… me perdoe… mas n to entendendo muito bem. vc quer saber q tipo de variavel q esta chegando no nesse campo?

se sim, bom… eh pra ser float…

cara… me perdoe mas n to entendendo muito bem oq vc quer dizer…

vc quer saber q tipo de valor q esta chegando no campo?

se sim, eh pra ser float… pq senao fica incompativel com o banco…

desculpe a minha ignorancia

thanks

cara,

vc pode fazer assim

//criacao do seu componente
NumberFormatter numFormatter = new NumberFormatter(new DecimalFormat("#,###.00"));  
		numFormatter.setAllowsInvalid(false);  
		txt_salario = new JFormattedTextField();  
		txt_salario.setFormatterFactory( new DefaultFormatterFactory(numFormatter));

//preencher seu objeto Funcionario
funcionarios.setSalario(Float.valueOf(valor.getValue().toString())); 

t+