Java com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列“hourId”不能为null
我的项目是教师分配。当我尝试插入数据时,它显示以下异常Java com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列“hourId”不能为null,java,mysql,jdbc,Java,Mysql,Jdbc,我的项目是教师分配。当我尝试插入数据时,它显示以下异常 "com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'hourId' cannot be null" 有谁能帮我克服这个问题吗? 请提供示例代码以避免此异常 "com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Colum
"com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Column 'hourId' cannot be null"
有谁能帮我克服这个问题吗?
请提供示例代码以避免此异常
"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);
}
错误表明hourId有一个空值,因此必须避免它。例如,您可以使用:
String hourId = request.getParameter("hourId");
if (hourId==null)
hourId="";
只要列接受空字符串。如果不是,则必须更改表定义以允许空值:
ALTER TABLE tblstaffallocation
MODIFY COLUMN hourId INTEGER NULL;
错误表明hourId有一个空值,因此必须避免它。例如,您可以使用:
String hourId = request.getParameter("hourId");
if (hourId==null)
hourId="";
只要列接受空字符串。如果不是,则必须更改表定义以允许空值:
ALTER TABLE tblstaffallocation
MODIFY COLUMN hourId INTEGER NULL;
每个表都有主键,并且主键的键属性不允许空值,这是一种很好的做法。。。 ORM/Hibernate严格遵循这个原则,其中每个实体/持久bean都应该有主键。。您的问题的答案是,您正在尝试向主\不可为空的列插入空值。。。。所以你得到了一个例外。。。下面的代码不是好的实践。如果您有意使列可为null,那么显然没有必要尝试插入null/empty值。。最好在实际开始实现应用程序之前设计数据模型
if (hourId==null)
hourId="";
希望这将是有益的
干杯 每个表都有主键,并且主键的键属性不允许空值,这是一种很好的做法。。。 ORM/Hibernate严格遵循这个原则,其中每个实体/持久bean都应该有主键。。您的问题的答案是,您正在尝试向主\不可为空的列插入空值。。。。所以你得到了一个例外。。。下面的代码不是好的实践。如果您有意使列可为null,那么显然没有必要尝试插入null/empty值。。最好在实际开始实现应用程序之前设计数据模型
if (hourId==null)
hourId="";
希望这将是有益的
干杯 让我们检查一下hibernate的场景。 解决方案: 1.使用表检查实体映射。 2.检查主键和外键的关系。 3.主键在表中不能为null,在其他表中可以为null
让我们检查一下hibernate的场景。 解决方案: 1.使用表检查实体映射。 2.检查主键和外键的关系。 3.主键在表中不能为null,在其他表中可以为null
创建表时,列hourId被设置为NOTNULL,并且您正尝试使用null值进行更新。
您可以更改表格以接受hourId为null,或者为hourId设置一些默认值列hourId在创建表格时设置为not null,并且您尝试使用null值进行更新。
您可以更改表以接受hourId为null,或者为hourId设置一些默认值将column_name更改为null我尝试过,当我向表中插入数据时,编码工作正常。但当我从tblstaffallocation中给出select*时。除staffname之外输入的所有值都存储为空值。@user2951465 hourid列不接受空值。请确保request.getParameterhourId;不回来null@lucas我不明白你的意思,我应该提供什么名字?请多点specific@user2951465对不起,我的意思是hourId:将column_name更改为Nullable我尝试过,当我将数据插入表中时,编码工作正常。但当我从tblstaffallocation中给出select*时。除staffname之外输入的所有值都存储为空值。@user2951465 hourid列不接受空值。请确保request.getParameterhourId;不回来null@lucas我不明白你的意思,我应该提供什么名字?请多点specific@user2951465对不起,我的意思是hourId:我尝试了您所说的,它显示java.sql.SQLException:不正确的整数值:对于第1行exceptionColumn的“hourId”列,它是一个int,因此它需要一个整数作为输入。如果您将其作为参数提供,它将返回一个SQL异常。那么我必须用什么替换它呢?请稍感困惑您是否希望在hourId中允许空值?如果是,请尝试给定的SQL。如果不是,则当请求参数为null时,必须决定希望在表字段中显示什么。这将取决于你的计划。。。我们不能决定。用0表示无值字段是很常见的,但这取决于您使用它的目的。我尝试了您所说的,它显示了java.sql.SQLException:不正确的整数值:对于第1行的列“hourId”,exceptionColumn是一个int,因此它需要一个整数作为输入。如果您将其作为参数提供,它将返回一个SQL异常。那么我必须用什么替换它呢?请稍感困惑您是否希望在hourId中允许空值?如果是,请尝试给定的SQL。如果不是,则当请求参数为null时,必须决定希望在表字段中显示什么。这将取决于你的计划。。。我们不能决定。用0表示无值字段是很常见的,但这取决于您使用的是什么
但如果我想保留数据库中以前的值而不去碰它。我该怎么做呢?如果您的上一个值为null,并且给出了SQLException,那么您必须插入一个零,修改表的列以接受字符串,或者将列默认值设置为0。但是,如果我想在数据库中保留上一个值而不触碰它。我该怎么做?如果您的上一个值为空,则必须插入零,修改表的列以接受字符串,或者将列默认值设置为0。