private void gravarNovoUsuario() {
Usuario u = new Usuario();
u.setNome(String.valueOf(etNome.getText()));
u.setAltura(Float.valueOf(String.valueOf(etAltura.getText())));
u.setCaloria(Float.valueOf(String.valueOf(etCaloria.getText())));
u.setPeso(Float.valueOf(String.valueOf(etPeso.getText())));
u.setSexo(sexo);
daoUsuario dao = new daoUsuario();
dao.gravarUsuario(u);
chamaMenuPrincipal();
}
ESSE É MEU METODO DE GRAVAR NOVO USUARIO NO BANCO, SO QUE DA ERRO E FECHA O PROJETO QUANDO EU CLICO PARA GRVAR… JA FIZ VARIOS TESTES, RESUMINDO…
SE EU COMENTA ONDE CARREGA O OBJETO ‘USUARIO’ E DEIXA SO A PARTE ONDE CHAMA O METODO DAO.GRAVARUSUARIO… O METODO E CHAMADO NORMALMENTE… MAS QUANDO TIRO DO COMENTARIO O OBJETO USUARIO DA ERRO E FECHA… É COMO SE O METODO ‘GRAVARNOVOUSUARIO’ FIZESSE UMAS DAS COISAS… MAS NAO AS DUAS COISAS QUE É CARREGA O OBJETO E CHAMA OUTRO METODO PARA GRAVA ELE NO BANCO…
kra, isso ae ta meio louco…pesquise sobre pattern DAO.
mas vamos la.
veja.
//bean
public class Usuarios{
private Long id;
private String nome;
private Double peso;
private Double altura;
//gets e sets
}
//DAO
public class UsuariosDAO{
private Connection con;
UsuariosDAO(){
this.con = Conexao.getConnection(); //assim vc sempre tera uma conexao.
}
public void insere(Usuarios u) throws SQLException{
PreparedStatement stm = this.con.prepareStatement("INSERT INTO usuarios (nome, peso, altura) VALUES (?,?,?)");
stm.setString(u.getNome());
stm.setDouble(u.getPeso());
stm.setDouble(u.getAltura());
stm.executeUpdate();
stm.close();
}
}
//aqui onde chamo meu DAO para gravar.
//preenche o Bean e grava
Usuarios usuario = new Usuarios();
usuario.setNome(nomeUsuario.getText());
usuario.setPeso(Double.parseDouble(pesoUsuario.getText());
usuario.setAltura(Double.parseDouble(alturaUsuario.getText());
UsuariosDAO uDAO = new UsuariosDAO();
uDAO.insere(usuario);//grava o usuario
//classe de conexao
public class Conexao{
public static Connection getConnection() throws SQLException{
try {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://xxx.xxx.xxx.xxx/bd?user=root&password=root");
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
throw new SQLException();
}
}
Não concatene Strings no seus SQLs, Java é orientado a objeto não a Strings.
Da uma lida na apostila FJ21 da Caelum na parte de DAO.
mas nao consegui resolver o primeiro problema… que foi o primeiro post desse forum…
eu nao consigo passa um objeto atraves de um metodo para inserir ele no banco… que é o primeiro codigo q postei