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;
}
}
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;
}
}