[RESOLVIDO] Criando um Select?

7 respostas
Vodga

Olá galera, gostaria de saber como crio um select que pega o valor do banco e seta em uma variável do programa (automatico ao iniciar o programa ou abrir a tela).
eu criei um select só que nao ta funcionando.

meu select nao funcionando:

public class cadastroDao {

    private Connection conexao;

    /**
     *
     * @throws SQLException
     */
    public cadastroDao() throws SQLException {
        this.conexao = Conexao.getConexao();
    }

    public void consultar() {
        String sql = "select * from modalidade where id = 1";
        try {
            Variavel c1 = new Variavel();
            PreparedStatement stmt = this.conexao.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();
            rs.next();

            c1.setMusculacao(rs.getDouble("musculacao"));
            c1.setMuayThay(rs.getDouble("muayThai"));
            c1.setJiujitsu(rs.getDouble("jiujitsu"));
            c1.setGinastica(rs.getDouble("ginastica"));
            c1.setOutros(rs.getDouble("outros"));
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

7 Respostas

leofariasrj25

Você está criando um método de consulta que não retorna nada! O_o

mude o tipo de retorno do método de void para Variavel, cria a variável v1 antes do bloco try, crie o objeto dentro do try, e ao final do método retorne o objeto com o valores recuperados via select.

Crie uma classe de teste que chama contatoDao e imprima os valores na tela da classe Variavel.

Vodga

puts é verdade!
mas o método ta correto?
é assim que se faz um select? ;x
nao me lembro muito bem dos modificadores de acesso.
qual devo usar invez de void? :S

leofariasrj25

o código do select em si está certo.

Agora, se esta ideal? não.

No seu método consulta ele sempre vai pegar o primeiro registro da tabela, se é isso que você quer para um teste rápido ta ok, mas o ‘ideal’ é que o método consulta tenha um argumento id e insira ele na query sql,

public Variavel consulta(long id) {

	String sql = "select * from modalidade where id=?" //esse ? será substituído pela variável id

	PreparedStatement stmt = conexao.prepareStatement(sql);

        stmt.setLong(1, id);

	ResultSet result = stmt.executeQuery();

	//resto do código aqui
}
Vodga

Ficou assim

public Variavel consulta(int id) throws SQLException {  
   Variavel c1 = new Variavel();
    String sql = "select * from modalidade where id=?";
  
    PreparedStatement stmt = conexao.prepareStatement(sql);  
        stmt.setInt(1, id);  
        
    ResultSet result = stmt.executeQuery(); 
    
    c1.setMusculacao(result.getDouble("musculacao"));
            c1.setMuayThay(result.getDouble("muayThai"));
            c1.setJiujitsu(result.getDouble("jiujitsu"));
            c1.setGinastica(result.getDouble("ginastica"));
            c1.setOutros(result.getDouble("outros"));
            result.close();
          return null;

     }

mas e agora como eu chamo esse codigo em um metodo? ou nao precisa? como faço pra funcionar? xD

leofariasrj25

você não deve retornar null, você tem que retornar o a variável c1.

como chamar o método? rapaz, você é novo com java e programação em geral? é o que eu estou percebendo.

Pega a apostilas da Caelum de Java (Fj11 e Fj21) que são gratuítas e da uma estudada por elas. comece pela fj11 que aborda Java e orientação a objetos, depois parta pra fj21.

Vodga
ok ja mudei pra
return c1;

tem como me explicar o resto?
eu tentei assim

public void insert() throws SQLException{
         cadastroDao dao = new cadastroDao();
         dao.consulta(1); // botei 1 pq tem que por um numero e nao sei oq por
        
    }

so que bugou

Vodga

Ai galera, como poderão ver não quiseram me ajudar entao fiquei horas tentando descobrir como fazer este maldito!
se alguem ta trabalhando com checkbox e precisa pegar um valor do banco, o codigo é assim ó!

cadastroDao:

public List<Variavel> getLista() {
     try {
         List<Variavel> contatos = new ArrayList<Variavel>();
       PreparedStatement stmt = this.conexao.prepareStatement("select * from modalidade");
              ResultSet rs = stmt.executeQuery();
 
         while (rs.next()) {
            Variavel v1 = new Variavel();
            v1.setId(rs.getInt("id"));
            v1.setMusculacao(rs.getDouble("musculacao"));  
            v1.setMuayThay(rs.getDouble("muayThai"));  
            v1.setJiujitsu(rs.getDouble("jiujitsu"));  
            v1.setGinastica(rs.getDouble("ginastica"));  
            v1.setOutros(rs.getDouble("outros"));  
             contatos.add(v1);
         }
         rs.close();
         stmt.close();
         return contatos;
     } catch (SQLException e) {
         throw new RuntimeException(e);
     }
 }

nos codigos da tela:

double total;

    public void musculacao() throws SQLException {

        cadastroDao dao = new cadastroDao();
        List<Variavel> contatos = dao.getLista();
        for (Variavel v1 : contatos) {

            if (!jCmusculacao.isSelected()) {

                total -= v1.getMusculacao();
            }
            jTmensalidade.setText(total + "");

            if (jCmusculacao.isSelected()) {
                total += v1.getMusculacao();
            }
            jTmensalidade.setText(total + "");
        }
    }
Criado 21 de junho de 2013
Ultima resposta 22 de jun. de 2013
Respostas 7
Participantes 2