Erro ao chamar metodo

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…

O Q POSSO FAZER?

3 coisas.

1 - nao escreva seus posts em caixa alta.
2 - poste todo o codigo. Bean e DAO
3 - poste o erro.

t+ e boa sorte

codigo DAO

public class daoUsuario extends principal {
	

	SQLiteDatabase bancoDados = null;

	public void abreouCriaBanco() {
		mensagemExibir("kkk", "entrei no metodo");
		try {
			String nomeBanco = "bancoMedida";
			bancoDados = openOrCreateDatabase(nomeBanco, MODE_WORLD_READABLE,
					null);
			mensagemExibir("erro", "banco criado");
		} catch (Exception e) {
			mensagemExibir("erro", String.valueOf(e));
		}
		try {
			String sql = "CREATE TABLE IF NOT EXISTS usuario "
					+ "(id_usuario integer primary key, nome TEXT, caloria DOUBLE,"
					+ "altura DOUBLE, peso DOUBLE, sexo INTEGER);";
			bancoDados.execSQL(sql);
			mensagemExibir("erro", "TABELA criado");
		} catch (Exception e) {
			mensagemExibir("erro", String.valueOf(e));
		}

	}

	public void gravarUsuario(Usuario u) {
		abreouCriaBanco();
		try {
			String sql = "INSERT INTO usuario (nome, caloria, altura, peso, sexo) values ('"
					+ u.getNome()
					+ "','"
					+ u.getCaloria()
					+ "','"
					+ u.getAltura()
					+ "','"
					+ u.getPeso()
					+ "','"
					+ u.getSexo()
					+ "')";
			bancoDados.execSQL(sql);
		} catch (Exception e) {
			mensagemExibir("erro", String.valueOf(e));
		}

	}

	public void mensagemExibir(String titulo, String texto) {
		AlertDialog.Builder mensagem = new AlertDialog.Builder(daoUsuario.this);
		mensagem.setTitle(titulo);
		mensagem.setMessage(texto);
		mensagem.setNeutralButton("OK", null);
		mensagem.show();

	}
}

codigo Bean

public class Usuario {
	private int id_usuario;
	private String nome;
	private Float caloria;
	private Float altura;
	private Float peso;
	private int sexo;
	
	public int getId_usuario() {
		return id_usuario;
	}
	public void setId_usuario(int id_usuario) {
		this.id_usuario = id_usuario;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Float getCaloria() {
		return caloria;
	}
	public void setCaloria(Float caloria) {
		this.caloria = caloria;
	}
	public Float getAltura() {
		return altura;
	}
	public void setAltura(Float altura) {
		this.altura = altura;
	}
	public Float getPeso() {
		return peso;
	}
	public void setPeso(Float peso) {
		this.peso = peso;
	}
	public int getSexo() {
		return sexo;
	}
	public void setSexo(int sexo) {
		this.sexo = sexo;
	}
	
}

Codigo que chama o dao

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();
	}
	

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.

t+ e boa sorte.

ok agora fiz o novo COnection mas esta com erro

[code]
public class Conexao extends principal{
static SQLiteDatabase bancoDados = null;
public static Connection getConexao() throws SQLException{
try {
String nomeBanco = “bancoMedida”;
bancoDados = openOrCreateDatabase(nomeBanco, MODE_WORLD_READABLE, null);

		String sql = "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 (Exception e) {
		
	}
}

}[/code]

o metodo openorcreate esta com erro

Qual erro?

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

Para passar um Objeto para um Banco de Dados, primeiro precisamos torna-lo Serializable.

Da uma pesquisada nisso! :slight_smile: