Partage
  • Partager sur Facebook
  • Partager sur Twitter

java.sql.SQLIntegrityConstraintViolationException

JavaFx exception

    25 avril 2021 à 5:10:39

    Bonjour,

    je suis entrain de travailler sur un concours de video dont les utilsateurs peuvent participer à un concours et je manipules les tables Concour,Video,Participation et Users j'ai réussi à stocker la video dans la base mais la relation entre concours et video qui est la table participation m'a bloqué dans la partie que je dois stocker l'id de concours,id user et id video dans la table en affichant l'erreur java.sql.SQLIntegrityConstraintViolationException: Le champ 'concour_id' ne peut être vide (null) dans la classe participationService

    voici les différentes classes, je serais très reconnaissante si quelqu'un peut m'aider et merci d'avance.

    public class ParticipationServices {
    
        private Connection connection;
        private Statement ste;
        private PreparedStatement pst;
        private ResultSet rs;
     private Concour c;
         public void setConcour(Concour c) {
            this.c=c;
        }
        public ParticipationServices() {
            Connection connection = MyConnection.getInstance().getCnx();
        }
    
        public void create(Participation p, Video v) throws SQLException {
            long id = 0;
            String req;
    Concour c =this.c;
            req = "INSERT INTO `video`(`url`, `title`, `publish_date`, `owner`) values (?,?,?,(select id from users where id=?))";
            Connection connection = MyConnection.getInstance().getCnx();
    
            try {
    
                pst = connection.prepareStatement(req, Statement.RETURN_GENERATED_KEYS);
                pst.setString(1, v.getUrl());
                pst.setString(2, v.getTitle());
                pst.setTimestamp(3, v.getPublish_date());
                pst.setObject(4, v.getOwner().getId());
                pst.executeUpdate();
                ResultSet rs = pst.getGeneratedKeys();
                if (rs.next()) {
                    id = rs.getLong(1);
    
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            String req2 = "insert into `participation`(concour_id,video_id,date_participation,user_id) values((select id from concour where id=?),(select id from video where id=?),?,(select id from users where id=60))";
            try {
                pst = connection.prepareStatement(req2);
                System.out.println(p.getDateParticipation());
                pst.setObject(1, p.getConcourId());
                pst.setObject(2,p.getUserId().getId());
                pst.setTimestamp(3, (Timestamp) p.getDateParticipation());
                pst.setObject(3, id);
    
                pst.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }
    public class ConcourVParticipateController implements Initializable {
    
        @FXML
        private AnchorPane participation;
        @FXML
        private Button btn_participate;
        @FXML
        private TextField title;
        @FXML
        private WebView preview;
        @FXML
        private Button btn_cancel;
        @FXML
        private Label participation_date;
        @FXML
        private TextField url;
         private Concour c;
         public void setConcour(Concour c) {
            this.c=c;
        }
    
        /**
         * Initializes the controller class.
         */
        @Override
        public void initialize(URL url, ResourceBundle rb) {
            participation_date.setText(new Timestamp(System.currentTimeMillis()).toString());
        }    
    
        @FXML
        private void participate(ActionEvent event) throws SQLException {
              String t=title.getText();
            String u=url.getText();
            Timestamp time= new Timestamp(System.currentTimeMillis());
    //        UserSession s=  UserSession.instance;
            Users owner=new Users(60, "", "", 0, "test", "test", "test", "test", true, 0, "test");
            Video v=new Video(u, t, time, owner);
            Participation cp=new Participation(c, owner, time, v);
            ParticipationServices ps= new ParticipationServices();
            
            ps.create(cp, v);
            Alert alert = new Alert(Alert.AlertType.INFORMATION);
                alert.setTitle("Participation");
                alert.setHeaderText("Participation Added Succesfully");
                alert.setContentText("Go Back To The Homepage");
    
                alert.showAndWait();
                Stage stage = (Stage) participation.getScene().getWindow();
                 stage.close();
        }



    -
    Edité par HFH-iba 25 avril 2021 à 5:11:36

    • Partager sur Facebook
    • Partager sur Twitter
      25 avril 2021 à 6:42:27

      Bonjour,

      Le problème vient du constructeur, ligne 12. Tu initialises une variable locale au lieu de l'attribut.

      • Partager sur Facebook
      • Partager sur Twitter
        25 avril 2021 à 17:00:04

        brubru777 a écrit:

        Bonjour,

        Le problème vient du constructeur, ligne 12. Tu initialises une variable locale au lieu de l'attribut.


        Merci pour votre retour mais vous pouvez mieux clarifier le probléme car j'ai pas réussi à le résoudre :(
        • Partager sur Facebook
        • Partager sur Twitter

        java.sql.SQLIntegrityConstraintViolationException

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown