NullPointerException

3 respostas
dyulax

Não estou conseguindo resolver a NullPointerException gerada aqui:

motos.add(moto);

Podem me ajudar?

Classe MotoDao:

package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import modelos.Moto;

public class MotoDAO {

    private Connection mysql;
    private Connection oracle;

    public MotoDAO() throws SQLException {

        try {

            this.mysql = ConnectionFactory.getConexaoMySQL();
            this.oracle = ConnectionFactory.getConexaoOracle();

        } catch (SQLException e) {

            throw e;
            
        }

    }

    public void inserir(Moto moto) throws SQLException {

        String sql = "INSERT INTO moto VALUES (NULL, ?, ?, ?, ?)";

        PreparedStatement stmt = this.mysql.prepareStatement(sql);

        SimpleDateFormat datetime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        stmt.setInt(0, moto.getDono());
        stmt.setString(1, moto.getPlaca());
        stmt.setString(2, moto.getSenha());
        stmt.setString(3, datetime.format(moto.getHora()));

        stmt.execute();
        stmt.close();

    }

    public List<Moto> getListar() throws SQLException {

        List<Moto> motos = null;

        String sql = "SELECT * FROM moto";

        Statement stmt = this.mysql.createStatement();

        ResultSet rs = stmt.executeQuery(sql);

        while (rs.next()) {

            if (rs.getString("placa") != null) {
            
                Moto moto = new Moto(
                    rs.getLong("id"),
                    rs.getInt("dono"),
                    rs.getString("placa"),
                    rs.getString("senha"),
                    rs.getDate("hora")
                );
                motos.add(moto);

            } else {

                Moto moto = new Moto(1, "-", "-", new Date());
                motos.add(moto);

            }

        }

        rs.close();

        stmt.close();

        return motos;

    }

}
Classe Moto:
package modelos;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import persistencia.ConnectionFactory;

public class Moto {

    private Long id;
    private int dono;
    private String placa;
    private String senha;
    private Date hora;

    /* Atributos que vem da view no Oracle */
    private String nome;
    private String curso;
    private int periodo;
    private String regular;

    public Moto(Long id, int dono, String placa, String senha, Date hora) throws SQLException {
        this.id = id;
        this.dono = dono;
        this.placa = placa;
        this.senha = senha;
        this.hora = hora;

        /* Busca dados no Oracle */
        try {
            String sql = "SELECT * FROM mentor.dados_sae WHERE matricula = " + dono + " AND rownum = 1";

            Connection con = ConnectionFactory.getConexaoOracle();

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery(sql);

            rs.next();

            this.curso = rs.getString("curso");
            this.nome = rs.getString("nome");
            this.periodo = rs.getInt("periodo");
            int regularidade = rs.getInt("regular");

            if (regularidade == 1) {
                this.regular = "Regular";
            } else {
                this.regular = "Irregular";
            }

            rs.close();
            stmt.close();
        } catch (SQLException e) {
            throw e;
        }
    }

    public Moto(int dono, String placa, String senha, Date hora) {
        this.dono = dono;
        this.placa = placa;
        this.senha = senha;
        this.hora = hora;
        this.id = null;
    }

    public int getDono() {
        return dono;
    }

    public void setDono(int dono) {
        this.dono = dono;
    }

    public Date getHora() {
        return hora;
    }

    public void setHora(Date hora) {
        this.hora = hora;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getPlaca() {
        return placa;
    }

    public void setPlaca(String placa) {
        this.placa = placa;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }
    
}

3 Respostas

T

Troque

List<Moto> motos = null;

por

List<Moto> motos = new ArrayList<Moto>();
lcegatti

Na sua classe MotosDAO no método getListar() vc esqueceu de instanciar o atributos motos:

List<Moto> motos = new ArrayList<Moto>();

[]'s

dyulax

Muito obrigado! Funcionou!

Criado 21 de outubro de 2008
Ultima resposta 21 de out. de 2008
Respostas 3
Participantes 3