Consulta ao banco sem sucesso

1 resposta
W

Olá pessoal estou com uma dúvida aqui e ficaria grato se me ajudassem eu estou tentando realizar uma consulta no banco com o código abaixo:

package DAO;

import Adapter.FinanciadorAdapter;

import Model.Financiador;

import java.sql.Connection;

import java.sql.Date;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.swing.JOptionPane;

public class FinanciadorDAO {

public void GuardaFinanciador(Financiador financiador){
    PreparedStatement co=null;
    Connection c=null;
    try {
        Class.forName("org.mariadb.jdbc.Driver");
        
        c=DriverManager.getConnection("jdbc:mysql://127.0.0.1/sweet_homebd","root","willroot");
        String insercao="INSERT INTO financiador (nome,profissao,salario,home_boss,data_salario,montante_atual,limite_valor_conta,senha) VALUES (?,?,?,?,?,?,?,?)";
        co = c.prepareStatement(insercao);
        co.setString(1,financiador.getNome());
        co.setString(2,financiador.getProfissao());
        co.setDouble(3,financiador.getSalario());
        co.setBoolean(4,financiador.isHomeBoss());
        co.setDate(5,Date.valueOf(financiador.getDataSalario()));
        co.setDouble(6,financiador.getMontanteAtual());
        co.setDouble(7,financiador.getLimiteValorConta());
        co.setString(8,financiador.getSenha());
        co.execute();
        
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null,"Erro de conexão");
    }catch (SQLException ex) {
        JOptionPane.showMessageDialog(null,"Erro de sql "+ex);
    }finally{
        try {
            co.close();
            c.close(); 
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro de sql");
        }
      
    }
}


public Financiador ConsultaFinanciador(Financiador financiador){
    Connection c=null;
    PreparedStatement co=null;
    try{
        Class.forName("org.mariadb.jdbc.Driver");
        
        c=DriverManager.getConnection("jdbc:mysql://127.0.0.1/sweet_homebd","root","willroot");
        String busca="SELECT * FROM financiador WHERE nome=?";
        co=c.prepareStatement(busca);
        co.setString(1,financiador.getNome());
        ResultSet r;
        r=co.executeQuery();            
        FinanciadorAdapter adapter=new FinanciadorAdapter(r);
        return adapter.adaptarFinanciador();
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null,"Erro de conexão");
    } catch (SQLException ex) {
       JOptionPane.showMessageDialog(null,"Erro de sql"+ex.getErrorCode());
    }
  
    return null;       
}

A classe de “transformação” do objeto

package Adapter;
import Model.Financiador;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.time.LocalDate;

public class FinanciadorAdapter {

private ResultSet resultset;
private Financiador financiador;

public FinanciadorAdapter(ResultSet r){
    this.resultset=r;
    this.financiador=new Financiador();
}

public Financiador adaptarFinanciador()throws SQLException{
    
    financiador.setCodFinanciador(this.resultset.getInt(1));
    financiador.setProfissao(this.resultset.getString(3));
    financiador.setSalario(this.resultset.getDouble(4));
    financiador.setHomeBoss(this.resultset.getBoolean(5));
    financiador.setDataSalario(this.resultset.getDate(6).toLocalDate());
    financiador.setMontanteAtual(this.resultset.getDouble(7));
    financiador.setLimiteValorConta(this.resultset.getDouble(8));
    financiador.setSenha(this.resultset.getString(10));
    //Ainda não retorna o ranking mas logo será implementado
    return this.financiador;
}

}

O errorCod() é zero por isso acredito que isso quer dizer que estou supostamente tentando acessar o índice zero quando não é o caso.

1 Resposta

igomes

Posta a exception e da pra melhorar muita coisa ai nesse código.
Você tem dois códigos que criam a conexão em métodos diferentes, cria um método que te devolve uma connection, mais fácil não ?
public void GuardaFinanciador método com letra maiúscula ?
c=DriverManager.getConnection(“jdbc:mysql://127.0.0.1/sweet_homebd”,“root”,“willroot”)
c=DriverManager.getConnection(“jdbc:mysql://127.0.0.1/sweet_homebd”,“root”,“willroot”);
Código repetido
Nomes de variáveis intuitivos ajudam muito c, co, r.
Nos seus caths coloca e.getMessage();, e.toString(); que a exception vai ser mais clara, sobre o que acontece

Criado 21 de março de 2016
Ultima resposta 21 de mar. de 2016
Respostas 1
Participantes 2