[Java]Date diminuite di un giorno su db MySQL

Discussione in 'Java' iniziata da Andreawave, 7 Marzo 2019.

  1. Andreawave

    Andreawave Nuovo Utente

    Registrato:
    27 Gennaio 2014
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao a tutti.
    Ho il seguente problema:
    Sto facendo una java web application molto semplice in cui memorizzo nel database i dati relativi a una persona: nome, cognome e data di nascita.
    L'applicazione sembra funzionare tranne per il fatto che, inserendo una data (ad esempio 07/03/2019) mi ritrovo sul db tale data diminuita di un giorno, ovvero 2019-03-06. Com'è possibile?
    Potreste dirmi come fixare tale problema?
    Di seguito il codice:

    Il bean:
    Codice:
    import java.io.Serializable;
    import java.sql.Date;
    
    public class Persona implements Serializable {
     
       private int idPersona;
       private String nome;
       private String cognome;
       private Date dataNascita;
     
       public Persona() {
           super();
    
       }
    
       public Persona(String nome, String cognome, Date dataNascita) {
           super();
           this.nome = nome;
           this.cognome = cognome;
           this.dataNascita = dataNascita;
       }
    
       public Persona(int idPersona, String nome, String cognome, Date dataNascita) {
           super();
           this.idPersona = idPersona;
           this.nome = nome;
           this.cognome = cognome;
           this.dataNascita = dataNascita;
       }
    
       public int getIdPersona() {
           return idPersona;
       }
    
       public void setIdPersona(int idPersona) {
           this.idPersona = idPersona;
       }
    
       public String getNome() {
           return nome;
       }
    
       public void setNome(String nome) {
           this.nome = nome;
       }
    
       public String getCognome() {
           return cognome;
       }
    
       public void setCognome(String cognome) {
           this.cognome = cognome;
       }
    
       public Date getDataNascita() {
           return dataNascita;
       }
    
       public void setDataNascita(Date dataNascita) {
           this.dataNascita = dataNascita;
       }
    
    }
    La servlet:
    Codice:
    package servlet;
    
    import java.io.IOException;
    import java.sql.Date;
    import java.sql.SQLException;
    import java.text.ParseException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import bean.Persona;
    import dao.ProvaDao;
    import utility.ManipolazioneDate;
    
    /**
     * Servlet implementation class Inserimento
     */
    @WebServlet("/Inserimento")
    public class Inserimento extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        /**
         * Default constructor.
         */
        public Inserimento() {
        
          
        }
    
        /**
        * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
        */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          
            String nome = request.getParameter("nome");
            String cognome = request.getParameter("cognome");
            String dataNascita = request.getParameter("dataNascita");
            Date dataN = null;
            try {
                dataN = (Date) ManipolazioneDate.convertiData(dataNascita);
            } catch (ParseException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
          
            Persona p = new Persona(nome, cognome, dataN);
            System.out.println(p.getNome());
            System.out.println(p.getCognome());
            System.out.println(p.getDataNascita());
          
            try{
                ProvaDao.registraPersona(p);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    
    }

    La classe che mi permette di convertire la data dal formato stringa al formato java.sql.Date
    Codice:
    package utility;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class ManipolazioneDate {
     
        public static Date convertiData(String data) throws ParseException{
          
            SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
            Date parser = format.parse(data);
            java.sql.Date dataSql = new java.sql.Date(parser.getTime());
          
            return dataSql;
          
        }
    
    }


    La Jsp con il form per l'inserimento dei dati
    HTML:
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <div align="center">
            <form action="/Prova/Inserimento" method="get">
                <p>Nome</p>
                <input type="text" value="" name="nome">
                <br>
                <p>Cognome</p>
                <input type="text" value"" name="cognome">
                <br>
                <p>Data di nascita</p>
                <input type="text" value="" name="dataNascita">
                <br>
                <input type="submit" value="Invia">
              
            </form>
        </div>
    </body>
    </html>
    Il Dao
    Codice:
    package dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    import bean.Persona;
    import utility.Connessione;
    
    public class ProvaDao {
        
        public static void registraPersona(Persona persona) throws SQLException{
            
            Connection conn = Connessione.getConnection();
            PreparedStatement ps = null;
    
            
            String ins = "insert into prova2.persona(nome, cognome, dataNascita) values(?,?,?)";
            
            try{
                
                ps = conn.prepareStatement(ins);
                
                ps.setString(1, persona.getNome());
                ps.setString(2, persona.getCognome());
                ps.setDate(3, persona.getDataNascita());
                
                ps.executeUpdate();
                System.out.println("Persona inserita");
                
            }catch(SQLException e){
                
                System.out.println(e.getMessage());
                System.out.println("Errore nell'inserimento");
                
            }finally{
                
                if(ps != null){
                    ps.close();
                }
                
                if(conn != null){
                    conn.close();
                }
            }
        }
    
    }
    
     
    Ultima modifica: 7 Marzo 2019

Condividi questa Pagina