Java 完整性约束冲突:非空检查约束
这段代码正在连接到数据库,但每当我插入一个属性时,就会出现上述错误 该数据库正由两个类使用。第一个类将把类名插入ClassName列,然后我将单击addattribute按钮打开上面提到的类。当我在其中插入属性并按下“添加”按钮时,会出现以下错误:Java 完整性约束冲突:非空检查约束,java,swing,ms-access,ucanaccess,Java,Swing,Ms Access,Ucanaccess,这段代码正在连接到数据库,但每当我插入一个属性时,就会出现上述错误 该数据库正由两个类使用。第一个类将把类名插入ClassName列,然后我将单击addattribute按钮打开上面提到的类。当我在其中插入属性并按下“添加”按钮时,会出现以下错误: net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.7完整性约束冲突:非空检查约束;SYS_CT_10359 table:TABLE1 column:CLASSNAME看起来TABLE1对c
net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.7完整性约束冲突:非空检查约束;SYS_CT_10359 table:TABLE1 column:CLASSNAME看起来TABLE1对column CLASSNAME有一个NOTNULL约束 这意味着,如果CLASSNAME列没有值,就不能在表中插入新行 插入类名后,应该使用属性更新同一行 当前代码尝试插入仅包含属性的新行,因此约束会引发错误 您的更新声明应如下所示
ResultSet rs;
PreparedStatement ps;
Connection con;
public Attribute() {
try{
con = DriverManager.getConnection("jdbc:ucanaccess://D:/programming/myassignment/Database1.accdb");
System.out.println("Java is now connected to database");
}catch(Exception ex){
System.out.println(ex);
}
JButton btnAdd = new JButton("Add");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
PreparedStatement pstmt = (PreparedStatement) con.prepareStatement("insert into table1(Attributes) values(?)");
pstmt.setString(1, textField.getText());
pstmt.executeUpdate();
pstmt.close();
}catch (Exception ex){
System.out.println(ex);
}
}
});
btnAdd.setBounds(152, 203, 89, 23);
contentPane.add(btnAdd);
另外,检查表是否有任何其他约束(包括唯一主键)错误消息对我来说是显而易见的。classname列将获得NULLyeah,但classname列不为null。首先输入类名,然后输入属性。数据库中的“类名”列将显示类名。我的朋友:pI删除了
mysql
标记。我不知道在这里使用ms accessi做了什么我明白你的意思,它起作用了。但是我没有得到“以前插入的类名”部分。我应该在这里写什么?我以前输入的类名?@AhsonJunani是的,您以前输入的类名。如果有另一个类似这样的类,我必须在其中插入函数,该怎么办?就像我点击enterfunction按钮一样,这会打开另一个类,然后我在那里插入我的函数;setString(1,textField.getText());pstmt.setString(2,“Ahson”);pstmt.executeUpdate();pstmt.close();
PreparedStatement pstmt = (PreparedStatement) con.prepareStatement("update table1 set Attributes = ? where CLASSNAME = ?");
pstmt.setString(1, textField.getText());
pstmt.setString(2, "Previously Inserted Classname");