Estou fazendo um programa no qual envolve banco de dados, eu tenho um botão pesquisar, sei fazer a pesquisa para que retorne os valores com “System.out.println” mas não sei como por exemplo fazer a pesquisa e colocar o Código no campo de texto onde vai o código, ou o Nome no campo de texto onde vai o nome.
Espero que tenham entendido, qualquer dúvida é só perguntar!
[RESOLVIDO] Como fazer uma pesquisa ao Banco?
12 Respostas
Basta você colocar assim
jTextField.setText(valorVindoDoBanco);
onde o jTextField é nome do seu componente.
No caso seria POR EXEMPLO:
txtCodFuncionario.setText(Cod_Funcionario);
Certo?
E no caso da conexão, como fica? Igual a quando eu uso o “System.out.println”?
Como fica o select?
Da mesma forma, não muda em nada, é possível que dê um erro por causa que cod_funcionario deve ser inteiro, então faz assim.
txtCodFuncionario.setText(""+Cod_Funcionario);
Se você quiser postar o seu código da conexão e select pra nós analisar-mos.
Ok, vou tentar, qualquer coisa eu posto aqui!
String pesquisa = JOptionPane.showInputDialog(null,"Digite o código desejado:");
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String banco = "testetcc"; //Nome do Banco criado
String host = "localhost"; //Maquina onde está o banco
String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
String usuario = "root"; //Usuário do banco
String senha = ""; //Senha de conexão
Statement stmt = null; //Inicializa Statement
Connection conn = null; //Inicializa Connection
conn = DriverManager.getConnection(str_conn, usuario, senha);
stmt = conn.createStatement();
String sql = "SELECT * FROM funcionario WHERE Cod_Funcionario = " + pesquisa;
ResultSet rs = stmt.executeQuery(sql);
txtNomeFunc.setText(rs.getString("Nome"));
stmt.close();
conn.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Erro (" + ex + ") ao conectar ao banco de dados, entre em contato com o Administrador!");
}
Aqui está meu código, mas ele me retorna esse erro:
java.sql.SQLException: Illegal operation on empty result set.
String sql = "SELECT * FROM funcionario WHERE Cod_Funcionario = " + pesquisa;
Tente assim:
String sql = "SELECT * FROM funcionario WHERE Cod_Funcionario = ?";
Coloque o ponte de interrogação na clausula where ao lado do Cod_Funcionario.
Vc está usando Statement, procure saber sobre PreparedStatement e utilize no lugar, isso facilitará sua vida.
String pesquisa = JOptionPane.showInputDialog(null,"Digite o código desejado:");
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String banco = "testetcc"; //Nome do Banco criado
String host = "localhost"; //Maquina onde está o banco
String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
String usuario = "root"; //Usuário do banco
String senha = ""; //Senha de conexão
Statement stmt = null; //Inicializa Statement
Connection conn = null; //Inicializa Connection
conn = DriverManager.getConnection(str_conn, usuario, senha);
stmt = conn.createStatement();
String sql = "SELECT * FROM funcionario WHERE Cod_Funcionario = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pesquisa);
pstmt.execute();
txtNomeFunc.setText(Nome);
pstmt.close();
stmt.close();
conn.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Erro (" + ex + ") ao conectar ao banco de dados, entre em contato com o Administrador!");
}
Bem, agora o problema é outro. O que eu coloco ali na parte de “txtNomeFunc.setText(???)” como eu faço pra puxar a coluna nome?
Vc terá que utilizar o ResultSet e iterar em cima dele, pra poder pegar a coluna que vc deseja.
Como faço isso? Eu pensei em fazer isso, mas dá errado!
String pesquisa = JOptionPane.showInputDialog(null,"Digite o código desejado:");
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String banco = "testetcc"; //Nome do Banco criado
String host = "localhost"; //Maquina onde está o banco
String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
String usuario = "root"; //Usuário do banco
String senha = ""; //Senha de conexão
Statement stmt = null; //Inicializa Statement
Connection conn = null; //Inicializa Connection
conn = DriverManager.getConnection(str_conn, usuario, senha);
stmt = conn.createStatement();
String sql = "SELECT * FROM funcionario WHERE Cod_Funcionario = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pesquisa);
ResultSet rs = pstmt.executeQuery();
txtNomeFunc.setText(rs.getString("Nome"));
pstmt.close();
stmt.close();
conn.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Erro (" + ex + ") ao conectar ao banco de dados, entre em contato com o Administrador!");
}
Aí está o código e continua me dando erro:
java.sql.SQLException: Before start of result set.
O segundo tópico dessa apostila http://www.caelum.com.br/curso/fj-21-java-web/ é sobre JDBC - java.sql, dê uma olhada.
Consegui fazer, muito obrigado e desculpe o incomodo! :oops:
Blz, qualquer coisa estamos aqui pra ajudar.
Edite o assunto e coloque [RESOLVIDO], pra ajudar a filtrar os resolvidos dos pendentes.