违反完整性约束: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);
这段代码正在连接到数据库,但每当我插入一个属性时,它都会出现上述错误。
两个 class 正在使用此数据库。首先 class 将 class 名称插入到 ClassName 列中,然后我将单击添加属性按钮以打开上面提到的 class。当我在此插入属性并按下 "Add" 按钮时,出现以下错误:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 完整性约束违规:NOT NULL 检查约束; SYS_CT_10359 table:TABLE1 列:CLASSNAME
看起来 table TABLE1 对 CLASSNAME 列有 NOT NULL 约束。
这意味着,您不能在没有 CLASSNAME 列值的情况下向 table 中插入新行。
插入 CLASSNAME 后,您应该使用属性更新同一行。
您当前的代码试图插入一个只有属性的新行,因此约束会引发错误。
您的更新声明应如下所示。
PreparedStatement pstmt = (PreparedStatement) con.prepareStatement("update table1 set Attributes = ? where CLASSNAME = ?");
pstmt.setString(1, textField.getText());
pstmt.setString(2, "Previously Inserted Classname");
此外,检查 table 是否有任何其他约束(包括唯一主键)
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);
这段代码正在连接到数据库,但每当我插入一个属性时,它都会出现上述错误。
两个 class 正在使用此数据库。首先 class 将 class 名称插入到 ClassName 列中,然后我将单击添加属性按钮以打开上面提到的 class。当我在此插入属性并按下 "Add" 按钮时,出现以下错误:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 完整性约束违规:NOT NULL 检查约束; SYS_CT_10359 table:TABLE1 列:CLASSNAME
看起来 table TABLE1 对 CLASSNAME 列有 NOT NULL 约束。
这意味着,您不能在没有 CLASSNAME 列值的情况下向 table 中插入新行。
插入 CLASSNAME 后,您应该使用属性更新同一行。
您当前的代码试图插入一个只有属性的新行,因此约束会引发错误。
您的更新声明应如下所示。
PreparedStatement pstmt = (PreparedStatement) con.prepareStatement("update table1 set Attributes = ? where CLASSNAME = ?");
pstmt.setString(1, textField.getText());
pstmt.setString(2, "Previously Inserted Classname");
此外,检查 table 是否有任何其他约束(包括唯一主键)