Galera tudo bem ? Estou desenvolvendo sistema para estudos seguindo a apostila da Caelum, eu testo a conexão com o banco de dados no método Main( ), e consigo inserir com exito, mas ao utilizar a Servlet da um exception.
Segue os codigos...
public class Gasto {
private String nomeGasto;
private BigDecimal valorDoGasto;
private String dataVencimento;
private String mesReferencia;
private boolean status;
public String getNomeGasto() {
return nomeGasto;
}
public void setNomeGasto(String nomeGasto) {
this.nomeGasto = nomeGasto;
}
public BigDecimal getValorDoGasto() {
return valorDoGasto;
}
public void setValorDoGasto(BigDecimal valorDoGasto) {
this.valorDoGasto = valorDoGasto;
}
public String getDataVencimento() {
return dataVencimento;
}
public void setDataVencimento(String dataVencimento) {
this.dataVencimento = dataVencimento;
}
public String getMesReferencia() {
return mesReferencia;
}
public void setMesReferencia(String mesReferencia) {
this.mesReferencia = mesReferencia;
}
public boolean getStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
public class ConnectionFactory {
public Connection getconnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/financeiro", "root", "root");
return con;
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
public class GastoDAO {
private Connection connection;
public GastoDAO() {
try {
this.connection = new ConnectionFactory().getconnection();
} catch (Exception e) {
e.printStackTrace();
}
}
public void adiciona(Gasto gasto) {
String sql = "insert into gastos"
+ "(nomeGasto, valorDoGasto, dataVencimento, mesReferencia,status)"
+ "values(?,?,?,?,?)";
try {
//prepared statement para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, gasto.getNomeGasto());
stmt.setBigDecimal(2, gasto.getValorDoGasto());
stmt.setString(3, gasto.getDataVencimento());
stmt.setString(4, gasto.getMesReferencia());
// stmt.setDate(3, Date.valueOf(gasto.getDataVencimento())); // http://respostas.guj.com.br/24591-localdate-e-jdbc
// stmt.setDate(4, new Date(gasto.getMesReferencia().getTimeInMillis()));
stmt.setBoolean(5, gasto.getStatus());
//executa
stmt.execute();
stmt.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
}
public class TesteGastoDAO {
public static void main(String[] args) {
Gasto gasto = new Gasto();
// pronto para gravar
gasto.setNomeGasto("Boleto");
BigDecimal valorGasto = new BigDecimal("300.00");
gasto.setValorDoGasto(valorGasto);
// LocalDate dataVencimento = LocalDate.of(1990, 03, 02);
// gasto.setDataVencimento(dataVencimento);
// gasto.setMesReferencia(Calendar.getInstance());
gasto.setDataVencimento("05/03/2018");
gasto.setMesReferencia("Fevereiro / 2018");
gasto.setStatus(true);
// grave nessa conexao
GastoDAO gastoDAO = new GastoDAO();
gastoDAO.adiciona(gasto);
System.out.println("Gravando");
}
}
@WebServlet("/adicionarGasto")
public class AdicionarGasto extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String nomeGasto = req.getParameter("nomeGasto");
String valorEmTexto = req.getParameter("valorDoGasto");
BigDecimal valorDoGasto = new BigDecimal(valorEmTexto);
String mesReferencia = req.getParameter("mesReferencia");
String dataVencimento = req.getParameter("dataVencimento");
String situacaoEmTexto = req.getParameter("situacao");
Boolean situacao = new Boolean(situacaoEmTexto);
// try {
//
// Date date = (Date) new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
// dataVencimento = Calendar.getInstance();
// dataVencimento.setTime(date);
//
// } catch (java.text.ParseException e) {
//
// e.printStackTrace();
//
// }
Gasto gasto = new Gasto();
gasto.setNomeGasto(nomeGasto);
gasto.setValorDoGasto(valorDoGasto);
gasto.setMesReferencia(mesReferencia);
gasto.setDataVencimento(dataVencimento);
gasto.setStatus(situacao);
GastoDAO gastoDAO = new GastoDAO();
gastoDAO.adiciona(gasto);
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Gasto " + gasto.getNomeGasto() + "Adicionado");
out.println("</body>");
out.println("</html>");
}
}