com.mysql.jdbc.des exceptions.jdbc4.MySQLIntegrityConstraintViolationexception: la Colonne "hourId' ne peut pas être null

Mon projet est la faculté de répartition. lorsque j'essaie d'insérer des données, il montre l'exception suivante.

"com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 
Column 'hourId' cannot be null"

Quelqu'un peut m'aider comment faire pour surmonter ce problème?
Veuillez fournir un exemple de code pour éviter cette exception.

Mon codage est

<%
    Connection con = null;
    String StaffName = request.getParameter("StaffName");
   //String subcode = request.getParameter("subcode");
    String hourId = request.getParameter("hourId");
    String daysId = request.getParameter("daysId");
    String date = request.getParameter("date");


  //String queryText = "insert into tblstaffallocation (StaffName, subcode,hourId, daysId, date) values('"+StaffName+"','"+subcode+"','+hourId+','+daysId+','+date+')";

    try {
          Class.forName("com.mysql.jdbc.Driver");
          con = DriverManager.getConnection("jdbc:mysql://localhost:3306/StaffAllocation","root","success");

       //PreparedStatement stat = con.PrepareStatement();
        String updateString ="INSERT INTO tblstaffallocation (StaffName,hourId,daysId,date) VALUES (?,?,?,?)";

        PreparedStatement preparedStatement = con.prepareStatement(updateString);


        preparedStatement.setString(1, StaffName);
        preparedStatement.setString(2, hourId);
        preparedStatement.setString(3, daysId);
        preparedStatement.setString(4, date);
        preparedStatement.executeUpdate();
        //int rst = stat.executeUpdate("insert into tblstaffallocation ('StaffName','hourId', 'daysId', 'date') values('"+StaffName+"','"+hourId+"','"+daysId+"','"+date+"')");

        %>
        <table cellpadding="4" border="1" cellspacing="4" align="center">
        <th>StaffName</th><th>hourId</th><th>daysId</th><th>date</th>
        <%
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery("select * from tblstaffallocation");
        while(rs.next()){
            rs.getString(1);
            rs.getString(2);
            rs.getString(3);
            rs.getString(4);

        }
        } catch (Exception e) { 
        out.print(e);

    }
  • changement column_name à nullable
  • ou de donner le nom
  • j'ai essayé aussi, lorsque j'insère les données dans la table, le codage des œuvres. mais quand je fais select * from tblstaffallocation. toutes les valeurs entrées autres que staffname sont stockés en tant que valeur null.
  • hourid colonne n'est pas accpet null.Assurez-vous que la demande.getParameter("hourId"); ne retourne pas null
  • je n'obtiens pas vous, quel nom dois-je fournir? veuillez être plus précis
  • désolé, je voulais dire hourId 🙂
  • S'il vous plaît, pouvez-vous fournir votre table créer de compte? Je suppose que vous êtes en train de faire un setString dans la preparedStatement pour ne pas les colonnes varchar certaines données qui ne peuvent pas être convertis
  • staffname varchar(30); hourId int(11) not null; daysId int(11) not null; date datetime not null;
  • Ok, staffname est de type varchar et fonctionne bien, ce qui sur les autres colonnes? Également essayer d'imprimer votre hourId, daysId, date paramètres de vérifier le contenu (le débogage ou d'impression) et assurez-vous qu'ils ne sont pas null
  • j'ai essayé les deux cas. j'ai eu cette exception "de java.sql.SQLException: pas une valeur entière: "pour la colonne 'hourId' à la ligne 1" quand j'ai modifié les colonnes en nullable 🙁
  • Si vous avez essayé le code dans la réponse ci-dessous cette erreur signifie que request.getParameter("hourId") retourne null et hourId est réglé sur "". Vérifiez vos paramètres GET, quelque chose ne va pas.

InformationsquelleAutor user2951465 | 2013-11-19