public boolean updateTeachers(Teachers t) {
boolean flag = false;
String sql = "update teachers set teachersid=?,tname=?,age=?,sex=?,email=?,humber=?,msn=?,address=? where tid=?";
try {
conn = DBUtil.getConnection();
pstm = conn.prepareStatement(sql);
pstm.setString(1,t.getTeachersid());
pstm.setString(2, t.getTname());
pstm.setInt(3, t.getAge());
pstm.setString(4, t.getSex());
pstm.setString(5, t.getEmail());
pstm.setString(6, t.getHumber());
pstm.setString(7, t.getMsn());
pstm.setString(8, t.getAddress());
pstm.setInt(9, t.getTid());
int i = pstm.executeUpdate();
if (i != 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.closePreparedStatement(pstm);
DBUtil.closeConnection(conn);
}
return flag;
}这是一个修改,但是出现ORA-01407: 无法更新 ("SCOTT"."TEACHERS"."EMAIL") 为 NULL

解决方案 »

  1.   

    无法更新 ("SCOTT"."TEACHERS"."EMAIL") 为 NULL-- 你的更新语句有问题,估计是 "TEACHERS"."EMAIL" 中间的句点,应该是字段分隔符(逗号)吧?
    -- 把 句点 修改成 逗号 试试!
      

  2.   

    你的SCOTT 下的TEACHERS 表的 EMAIL列的属性应该要求 NOT NULL了。
    既然要求不能为空,自然就不能被更新成NULL了。
      

  3.   

    无法更新 ("SCOTT"."TEACHERS"."EMAIL") 为 NULL
    不能更新为null值。
      

  4.   

    ("SCOTT"."TEACHERS"."EMAIL") 在表中式不允许为空的栏位吧!
      

  5.   

    无法更新 ("SCOTT"."TEACHERS"."EMAIL") 为 NULL,
    因为列设置了“NOT NULL”,而前台传参数可能是空的
      

  6.   

    email=?,
    表里的EMAIL字段是NOT NULL的。
      

  7.   

    必填栏位,不能为null
    pstm.setString(5, t.getEmail());
    t.getEmail()   为NULL了。
      

  8.   

    我也遇到这情况了  
    经过查找我发现是我的SERVLET里的request.getParameter()没接到TEXT的值 
    传给实体类时才报NULL