java - 完整性约束违规 : NOT NULL check constraint

标签 java swing ms-access ucanaccess

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 列中,然后我将单击“添加属性”按钮来打开上述类。当我在此插入属性并按“添加”按钮时,出现以下错误:

net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.7 完整性约束违规:NOT NULL 检查约束; SYS_CT_10359 表:TABLE1 列:CLASSNAME

最佳答案

看起来表 TABLE1 对列 CLASSNAME 有 NOT NULL 约束。

这意味着,如果 CLASSNAME 列没有值,则无法将新行插入到表中。

插入 CLASSNAME 后,您应该使用属性更新同一行。

您当前的代码尝试插入仅包含属性的新行,因此约束会引发错误。

您的更新声明应如下所示。

PreparedStatement pstmt = (PreparedStatement) con.prepareStatement("update table1 set Attributes = ? where CLASSNAME = ?");
pstmt.setString(1, textField.getText());
pstmt.setString(2, "Previously Inserted Classname");

此外,检查表是否有任何其他约束(包括唯一主键)

关于java - 完整性约束违规 : NOT NULL check constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136185/

相关文章:

java - Java中类似构造函数的语句来调用super

java - 是否有适用于 SWT/JFace 的合理的自动完成小部件?

java - 使用 GridBagLayout 使 JButton 大小相等

java - MS Access "invalid record set status"错误

ms-access - Access查询中如何选择前10条?

java - 使用 Apache poi 读取复杂的 xlsx

java - 使用@KafkaListener 对 Kafka 消费者进行勇敢追踪

java - 使用 JComboBox 和选择背景渲染 TableCell

Java Swing : How to prevent system copy, 剪切、粘贴操作?

c# - 从 ASP.NET 插入到 MS Access