Erro no campo salario ao salvar no banco de dados mysql
17 respostas
H
hishin
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.
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+
H
hishin
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
H
hishin
eu tirei o R$… e deixei ####.## e depois ####,##
nenhum dos 2 funcionam
A
alissonvla
vc tem que converter essa sua String em float, por isso que está ocorrendo o erro.
t+
A
alissonvla
posta seu codigo que vc ta salvando no banco
t+
H
hishin
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.Stringnome=txt_nome.getText().trim();Stringender=txt_endereco.getText().trim();Stringcpf=txt_cpf.getText().trim();Stringfone=txt_fone.getText().trim();Stringcidade=txt_cidade.getText().trim();Stringuf=cb_uf.getSelectedItem().toString().trim();Stringcargo=cb_cargos.getSelectedItem().toString().trim();Stringsalario=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{Funcionariosfuncionarios=newFuncionarios();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);FuncionariosDAOdao=newFuncionariosDAO();try{dao.incluir(funcionarios);}catch(SQLExceptione){JOptionPane.showMessageDialog(rootPane,"Aconteceu o erro"+e.getMessage());System.out.println();}travar_campos();abre_navegacao();}//Classe salvar funcionariospackagehotel.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importhotel.dominio.Funcionarios;/** * * @author raphael */publicclassFuncionariosDAO{privateConnectioncon;publicFuncionariosDAO(){try{con=newconexao().getConnection();}catch(SQLExceptionex){System.out.println("Aconteceu o erro: "+ex.getMessage());}}publicvoidincluir(Funcionariosfuncionario)throwsSQLException{Stringsql="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 clientePreparedStatementstmt=this.con.prepareStatement(sql);//definir os valores de acordo com o passado objeto clientestmt.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 sqlstmt.execute();//fecha o BDstmt.close();}catch(SQLExceptionex){thrownewRuntimeException(ex);}}publicvoidalterar(Funcionariosfun)throwsSQLException{Stringsql="UPDATE Funcionarios"+"set nome=?, cargo=?, salario=?, endereco=?, uf=?, fone=?, cpf=?"+"WHERE cod_fun=?";try{//prepara o statement para a alteraçãoPreparedStatementstmt=this.con.prepareStatement(sql);//seta os valoresstmt.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 updatestmt.executeUpdate();stmt.close();}catch(SQLExceptione){thrownewRuntimeException(e);}}publicvoidexcluir(intcod_fun)throwsSQLException{Stringsql="DELETE FROM Funcionarios"+"WHERE cod_fun=?";try{//prepara o statement para excluirPreparedStatementstmt=this.con.prepareStatement(sql);//seta os valoresstmt.setInt(1,cod_fun);//executastmt.executeUpdate();stmt.close();}catch(SQLExceptione){thrownewRuntimeException(e);}}publicFuncionariosbuscar(intcod_fun)throwsSQLException{FuncionariosfunEncontrado=newFuncionarios();ResultSetrs=null;Stringsql="SELECT * FROM Funcionarios"+"WHERE cod_fun="+cod_fun;PreparedStatementstmt=null;try{//prepara o statement para buscastmt=this.con.prepareStatement(sql);//executars=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"));}returnfunEncontrado;}catch(SQLExceptione){thrownewRuntimeException();}}publicArrayList<Funcionarios>buscarTodos()throwsSQLException{ArrayList<Funcionarios>dados=newArrayList<Funcionarios>();ResultSetrs=null;Stringsql="SELECT * FROM Funcionarios";PreparedStatementstmt=null;try{stmt=this.con.prepareStatement(sql);rs=stmt.executeQuery(sql);while(rs.next()){FuncionariosfunEncontrado=newFuncionarios();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(SQLExceptione){thrownewRuntimeException(e);}returndados;}}//classe funcionariospackagehotel.dominio;/** * * @author raphael */publicclassFuncionarios{privateintcod_func;privateStringnome;privateStringcargo;privatefloatsalario;privateStringendereco;privateStringcidade;privateStringuf;privateStringfone;privateStringcpf;/** * @return the cod_func */publicintgetCod_func(){returncod_func;}/** * @param cod_func the cod_func to set */publicvoidsetCod_func(intcod_func){this.cod_func=cod_func;}/** * @return the nome */publicStringgetNome(){returnnome;}/** * @param nome the nome to set */publicvoidsetNome(Stringnome){this.nome=nome;}/** * @return the cargo */publicStringgetCargo(){returncargo;}/** * @param cargo the cargo to set */publicvoidsetCargo(Stringcargo){this.cargo=cargo;}/** * @return the salario */publicfloatgetSalario(){returnsalario;}/** * @param salario the salario to set */publicvoidsetSalario(floatsalario){this.salario=salario;}/** * @return the endereco */publicStringgetEndereco(){returnendereco;}/** * @param endereco the endereco to set */publicvoidsetEndereco(Stringendereco){this.endereco=endereco;}/** * @return the cidade */publicStringgetCidade(){returncidade;}/** * @param cidade the cidade to set */publicvoidsetCidade(Stringcidade){this.cidade=cidade;}/** * @return the uf */publicStringgetUf(){returnuf;}/** * @param uf the uf to set */publicvoidsetUf(Stringuf){this.uf=uf;}/** * @return the fone */publicStringgetFone(){returnfone;}/** * @param fone the fone to set */publicvoidsetFone(Stringfone){this.fone=fone;}/** * @return the cpf */publicStringgetCpf(){returncpf;}/** * @param cpf the cpf to set */publicvoidsetCpf(Stringcpf){this.cpf=cpf;}}
A
alissonvla
cara,
pq vc colocou isso assim
funcionarios.setSalario(TOP_ALIGNMENT);
vc ja tentou colocar seu atributo salario como double?
t+
H
hishin
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:
vc ja tentou colocar seu atributo salario como double?
t+
o netbeans deu sozinho…
A
alissonvla
rsrs…
ta ai o erro, ai que vc vai ter que fazer a conversão do maskinput para float.
t+
H
hishin
putz… cara… como faz isso? :?
A
alissonvla
como ta chegando sua getText do seu maskinput? posta um exemplo
H
hishin
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=newMaskFormatter("#####,##");}catch(Exceptionerro){JOptionPane.showMessageDialog(null,"Não foi possível setar a máscara"+erro);}
criação de código personalizado
txt_salario=newJFormattedTextField(formatosal);
A
alissonvla
quero saber o que está vindo aqui
Stringsalario=txt_salario.getText().trim();
t+
H
hishin
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…
H
hishin
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
A
alissonvla
cara,
vc pode fazer assim
//criacao do seu componenteNumberFormatternumFormatter=newNumberFormatter(newDecimalFormat("#,###.00"));numFormatter.setAllowsInvalid(false);txt_salario=newJFormattedTextField();txt_salario.setFormatterFactory(newDefaultFormatterFactory(numFormatter));//preencher seu objeto Funcionariofuncionarios.setSalario(Float.valueOf(valor.getValue().toString()));