簡體   English   中英

違反完整性約束:NOT NULL檢查約束

[英]integrity constraint violation: NOT NULL check constraint

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后,您應該使用Attributes更新同一行。

您當前的代碼嘗試插入僅包含屬性的新行,因此約束引發錯誤。

您的更新聲明應如下所示。

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

另外,檢查表是否還有其他約束(包括唯一的主鍵)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM