com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列'hourId'不能为null

时间:2013-11-19 11:37:10

标签: java mysql jdbc

我的项目是教师分配。当我尝试插入数据时,它显示以下异常。

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

任何人都可以帮我解决这个问题吗? 请提供示例代码以避免此异常。

我的编码是

<%
    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);

    }

4 个答案:

答案 0 :(得分:0)

该错误表明hourId的值为NULL,因此您必须避免使用该值。例如,您可以使用:

String hourId = request.getParameter("hourId");
if (hourId==null)
    hourId="";

只要列接受空字符串。如果不是,则必须更改表定义以允许空值:

 ALTER TABLE tblstaffallocation
   MODIFY COLUMN hourId INTEGER NULL;

答案 1 :(得分:0)

这是一个很好的做法,每个表都有主键,主键的键属性不允许空值... ORM / Hibernate严格遵循这个原则,其中每个实体/持久bean应该有主键。回答你的问题是你试图将空值插入主\非可空列....所以你得到了异常..下面的代码不是很好的做法。如果你故意让你的列可以为空,那么显然没有必要尝试插入null / empty值。在实际开始实现应用程序之前,最好设计你的数据模型。

if (hourId==null)
    hourId="";

希望这会有所帮助......

干杯!

答案 2 :(得分:0)

在创建表时,将columnhourId设置为不为null,并且您尝试使用null值进行更新。 您可以更改表以将hourId接受为null或为hourId设置一些默认值

答案 3 :(得分:-1)

让我们检查一下休眠的场景 解决方案:

  

1.用表格检查实体映射   2.检查主键和外键关系   3.主键不能是&#34; not null&#34;在表中,它可以在其他表中为null。