Erro de ResultSet, não está posicionado corretamente, talvez você precise chamar next.
18/06/2017
0
Desde já obrigado pela atenção, e aguardo respostas, quem puder me ajudar eu vou agradecer bastante.
Janailson
Post mais votado
18/06/2017
Marcio Souza
Mais Posts
19/06/2017
Janailson
public BeansAgenda buscarAgendaCodigo (int cod){
BeansAgenda agen = new BeansAgenda();
conectDB.conexao();
conectDB.executaSql("select *from agenda inner join pacientes on cod_pac_agenda=cod_paciente inner join medicos on cod_med_agenda=cod_medico where cod_agenda='"+cod+"'");
try {
conectDB.rs.first();
agen.setNomePacinte(conectDB.rs.getString("nome_paciente"));
agen.setNomeMedico(conectDB.rs.getString("nome_medico"));
agen.setObservacao(conectDB.rs.getString("observ_agenda"));
agen.setDtnascPaciente(conectDB.rs.getString("nascimento_paciente"));
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro na busca do agendamento por codigo!"+ex);
}
return agen;
}
Esse é o codigo do metodo.
20/06/2017
Marcio Souza
public BeansAgenda buscarAgendaCodigo (int cod){ BeansAgenda agen = new BeansAgenda(); conectDB.conexao(); ResultSet rs = conectDB.executaSql("select *from agenda inner join pacientes on cod_pac_agenda=cod_paciente inner join medicos on cod_med_agenda=cod_medico where cod_agenda='"+cod+"'"); try { if (rs.next()) { agen.setNomePacinte(rs.getString("nome_paciente")); agen.setNomeMedico(rs.getString("nome_medico")); agen.setObservacao(rs.getString("observ_agenda")); agen.setDtnascPaciente(rs.getString("nascimento_paciente")); } } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Erro na busca do agendamento por codigo!"+ex); } return agen; }
Uma dica. Se está usando Statement substitua por PreparedStatement que evita o SQLInjecton.
20/06/2017
Janailson
public class ConexaoBanco {
public Statement stm; // Prepara e realiza as pesquisas
public ResultSet rs; // Guarda as pesquisas realizadas
private String driver = "org.postgresql.Driver"; // Driver padrão do Postgresql
private String caminho = "jdbc:postgresql://localhost:5432/softclinic"; // Caminho de localização, porta e nome do BD
private String usuario = "postgres"; // Usuário padrão postgres
private String senha = "admin"; // Senha de acesso ao Banco
public Connection conDB; // Variavel de conexão
public void conexao(){ // Metodo de conexão com o banco de dados
try {
System.setProperty("jdbc.Drivers", driver);
conDB=DriverManager.getConnection(caminho, usuario, senha);
//JOptionPane.showMessageDialog(null, "A conexão com o Banco de Dados foi realizda!!");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Não foi possível efetuar a conexão:\\n"+ex.getMessage());
}
}
public void executaSql(String sql){
try {
stm = conDB.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_READ_ONLY);
rs = stm.executeQuery(sql);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro na execução do Sql:\\n"+ex.getMessage());
}
}
public void desconecta(){ // Metodo de incerramento de conexão com o banco de dados
try {
conDB.close();
//JOptionPane.showMessageDialog(null,"Sua conexão com o Banco de Dados foi finalizada com Sucesso");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Não foi possível finalizar sua conexão:\\n"+ex.getMessage());
}
}
Esse é o meu arquivo de conexão como seria, apenas trocar de metodo?
21/06/2017
Marcio Souza
public void executaSql(String sql, Object... params) {//params recebe os parametros da consulta try { pstm = conDB.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); for (int i = 0; i < params.length; i++) { pstm.setObject(i+1, params[i]); //adiciona os paramentros no pstm } rs = pstm.executeQuery(); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Erro na execução do Sql:\\\\n"+ex.getMessage()); } }
E no código que chama o executaSql():
conectDB.executaSql("select * from agenda inner join pacientes on cod_pac_agenda = cod_paciente inner join medicos on cod_med_agenda = cod_medico where cod_agenda = ?", cod);
Os parametros da consulta devem agora ser substituídos por um ponto de interrogação. Depois, coloque o paramentro como um argumento do método executaSql(). Se tiver mais paramentros em outra consulta, basta separa-los por virgula, obedecendo a ordem deles dentro da consulta, exemplo:
executaSql("select * from Pessoas where nome = ? and idade = ?", nome, idade)
22/06/2017
Janailson
Ele tá dando um erro de "incompatible types void cannot be converted to ResultSet"
25/06/2017
Janailson
ResultSet rs = conectDB.executaSql("select *from agenda inner join pacientes on cod_pac_agenda=cod_paciente inner join medicos on cod_med_agenda=cod_medico where cod_agenda='"+cod+"'");
É nessa parte do codigo que fica dando incompatibilidade
25/06/2017
Marcio Souza
Clique aqui para fazer login e interagir na Comunidade :)