Java Desktop + MySQL

8 respostas
H

Estou com dificuldades em exibir um dado do mysql em um JTextField para possivel edição...
ele simplismente nao mostra ..

Classe de conexao:
package playereditor;

import java.sql.*;
import javax.swing.JOptionPane;

public class Conexao {
   String driver = "com.mysql.jdbc.Driver";
   String url = "jdbc:mysql://localhost/braveheartdb";
   String user = "root";
   String pwd = "hu47758";

   Connection conn = null;

   public void conectar () {
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user,pwd);
        } catch(ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null,"Excessão Classe não encontrada '"+ e +"","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
            e.printStackTrace();
        } catch(SQLException e) {
            JOptionPane.showMessageDialog(null,"SQL Exception... Erro na consulta: '"+ e +"","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch(SQLException erro) {
                JOptionPane.showMessageDialog(null,"Erro no fechamento"+ erro +"","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
                erro.printStackTrace();
            }
        }
    }
}

código para executar a consulta e exibir os dados:

public String account = "hudsonof";

    @Action
    public void buscarAccount() {

        try {
            Conexao connect = new Conexao();
            connect.conectar();
            Statement stm = connect.conn.createStatement();
            ResultSet rs = stm.executeQuery("SELECT * FROM accounts WHERE name ='" + account + "'");
            while (rs.next()) {
                String account = rs.getString("name");
                String senha = rs.getString("password");
                String email = rs.getString("email");
                campoSenha.setText(senha);
                campoEmail.setText(email);
            }
        } catch (SQLException e) {
            
        }
    }

nesta parte ao clicar no botao buscar ele chamaria o metodo acima e bucaria na tabela accounts na coluna name um dado chamado hudsonof, então ele deveria exibir os campos senha e email referentes ao hudsonof, mas naoa conteçe nada :S

8 Respostas

drsmachado

1 - Este registro realmente existe?
2 - Quanto ao que está ocorrendo, o ideal é debugar, ver se a consulta retorna algo e se está chegando a entrar no while…

A

três conselhos:

1 - Verifique se o registro existe no banco inclusive checando se o conteúdo do campo em que você pesquisa está maiúsculo ou minúsculo. Você tem que pesquisar do modo que estiver gravado lá;

2 - Escreva o seu select direitinho, colocando os nomes dos campos que quer retornar ao invés de SELECT * FROM…

3- Use PreparedStatement

G

vc não passou a variável account para a consulta. Use como sugerido PreparedStatement ao invés de Statement aí ficaria assim:

ps = c.prepareStatement(select idonibus from passagem where idonibus=?);

ps.setInt(1, idOnibus);

r = ps.executeQuery();

Dê uma olhada no site:

http://www.tiacademicoweb.xpg.com.br

pode ter bastante material que ajude.

drsmachado

gemeosguimaraes:
vc não passou a variável account para a consulta. Use como sugerido PreparedStatement ao invés de Statement aí ficaria assim:

Desculpe, mas e isto,

ResultSet rs = stm.executeQuery("SELECT * FROM accounts WHERE name ='" + [color=red] account [/color] + "'");

é o que?
Não está como preparedStatement, mas funciona…

L

você esta instanciando o metodo de conexão na chamada

drsmachado

Esta linha faz o que?

connect.conectar();
L

Qual local você atribui o valor ao texfield, que eu não estou vendo

codigo
rs: resultset, que faz uma busca no banco
tente: textfield.setText(rs.getString(“variavel do banco”)

drsmachado

leandro190782:
Qual local você atribui o valor ao texfield, que eu não estou vendo

codigo
rs: resultset, que faz uma busca no banco
tente: textfield.setText(rs.getString(“variavel do banco”)

while (rs.next()) {  
            String account = rs.getString("name");  
            String senha = rs.getString("password");  
            String email = rs.getString("email");  
            campoSenha.setText(senha);  
            campoEmail.setText(email);  
        }

Isto aqui faz o que?
Isto não deveria estar aqui, não é responsabilidade desta classe, muito menos deste método.

Criado 3 de fevereiro de 2011
Ultima resposta 5 de fev. de 2011
Respostas 8
Participantes 5