2013-06-19 135 views
-1

嗨,我在Java DB的NetBeans的初学者,违反外键

我有两个表,即交易和检查表中的事务表 我有一个名为[TRANSID]列,[PayToOrder],[BANKCODE] ,[Checknumber]。 in checks table我有名为[checknumber],[dateissued],[amount],[transID]的列。 我使用表单作为条目。

这里是我用来在数据库中插入数据的代码块。

private void btnAddRecordActionPerformed(java.awt.event.ActionEvent evt) {            
    // TODO add your handling code here: 
    String trID = txtTransID.getText(); 
    int ID = Integer.parseInt(trID); 
    String pto = txtPtO.getText(); 
    String bc = txtBankCode.getText(); 
    String cn = txtCheckNum.getText(); 
    int chNum = Integer.parseInt(cn); 
    String amount = txtAmount.getText(); 
    int amnt = Integer.parseInt(amount); 
    String dates = (String) txtDate.getValue(); 

    try{ 
     stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     String sql1 = "Select * From transactions"; 
     String sql2 = "Select * From checks"; 
     rs1 = stmt1.executeQuery(sql1); 
     rs2 = stmt2.executeQuery(sql2); 

     rs1.moveToInsertRow(); 
     rs2.moveToInsertRow(); 

     rs1.updateInt("transID", ID); 
     rs1.updateString("PAYTOORDER", pto); 
     rs1.updateString("BANKCODE", bc); 
     rs1.updateInt("checknumber", chNum); 
     rs2.updateInt("checknumber", chNum); 
     rs2.updateInt("AMOUNT", amnt); 
     rs2.updateString("DATEISSUED", dates); 
     rs2.updateInt("transID", ID); 

     rs1.insertRow(); 
     rs2.insertRow(); 
     stmt1.close(); 
     stmt2.close(); 
     rs1.close(); 
     rs2.close(); 

     JOptionPane.showMessageDialog(this, "Successfully Recorded!"); 
     } 

    catch(SQLException err){ 
     JOptionPane.showMessageDialog(this, err.getMessage()); 
    } 
} 

我一直得到一个错误:

“插入表‘交易’导致违反外键约束‘CHECKNUMBER’关键(输入的数据)的

请,如果任何人都可以。见识一下这部分

感谢

隆美尔安藤

+0

主键TRANSACTIONS表中的[TRANSID]外键是[CHECKNUMBER]。 [Checknumber]是CHECKS表中的主键,外键是[TRANSID]。 –

回答

0

您正尝试使用表CHECKS中不存在的CHECKNUMBER将数据插入到表TRANSACTIONS中。

因此,如果您有上述关系,则无法以此方式插入此数据,因为transID和Checknumber对于两者都是相同的。

您可以删除一个外键或者你可以设置checknumber为NULL交易的插入,插入检查,然后更新交易支票号码,什么是应该

+0

谢谢先生,我删除了一个外键,它的工作。现在的问题是我无法获得数据完整性,这意味着数据以不同的传输方式输入到事务表中,但是在检查表中没有输入或允许输入数据条目。 –

+0

发生了什么事是事务表有两行数据,并且检查表只有一行数据,因为它是系统不允许的。 –