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.
//beanpublicclassUsuarios{privateLongid;privateStringnome;privateDoublepeso;privateDoublealtura;//gets e sets}//DAOpublicclassUsuariosDAO{privateConnectioncon;UsuariosDAO(){this.con=Conexao.getConnection();//assim vc sempre tera uma conexao.}publicvoidinsere(Usuariosu)throwsSQLException{PreparedStatementstm=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 gravaUsuariosusuario=newUsuarios();usuario.setNome(nomeUsuario.getText());usuario.setPeso(Double.parseDouble(pesoUsuario.getText());usuario.setAltura(Double.parseDouble(alturaUsuario.getText());UsuariosDAOuDAO=newUsuariosDAO();uDAO.insere(usuario);//grava o usuario//classe de conexaopublicclassConexao{publicstaticConnectiongetConnection()throwsSQLException{try{Class.forName("com.mysql.jdbc.Driver");returnDriverManager.getConnection("jdbc:mysql://xxx.xxx.xxx.xxx/bd?user=root&password=root");}catch(ClassNotFoundExceptione){JOptionPane.showMessageDialog(null,e.getMessage());thrownewSQLException();}}
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.
t+ e boa sorte.
D
DaitonJr
ok agora fiz o novo COnection mas esta com erro
publicclassConexaoextendsprincipal{staticSQLiteDatabasebancoDados=null;publicstaticConnectiongetConexao()throwsSQLException{try{StringnomeBanco="bancoMedida";bancoDados=openOrCreateDatabase(nomeBanco,MODE_WORLD_READABLE,null);Stringsql="CREATE TABLE IF NOT EXISTS usuario "+"(id_usuario integer primary key, nome TEXT, caloria DOUBLE,"+"altura DOUBLE, peso DOUBLE, sexo INTEGER);";bancoDados.execSQL(sql);}catch(Exceptione){}}}
o metodo openorcreate esta com erro
Marky.Vasconcelos
Qual erro?
D
DaitonJr
obrigado consegui identifica o erro…
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
felipebonezi
Para passar um Objeto para um Banco de Dados, primeiro precisamos torna-lo Serializable.