-1

こんにちは、Java db netbeans の初心者です。

[transID]、[PayToOrder]、[BankCode]、[Checknumber] という名前の列があるトランザクション テーブルにトランザクション テーブルとチェック テーブルという 2 つのテーブルがあります。小切手テーブルには、[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());
    }
}

エラーが発生し続けます:

「テーブル 'TRANSACTIONS' への挿入により、キー (入力データ) の外部キー制約 'CHECKNUMBER' 違反が発生しました。

誰かがこの部分について私を啓発できるならお願いします

ありがとう

安藤ロンメル

4

1 に答える 1

0

テーブル CHECKS に存在しない CHECKNUMBER を使用して、テーブル TRANSACTIONS にデータを挿入しようとしています。

したがって、上記の関係がある場合、transID と Checknumber は両方で同じであるため、この方法でこのデータを挿入することはできません。

外部キーの 1 つを削除するか、チェック番号を NULL に設定してトランザクションを挿入し、チェックを挿入してから、トランザクション チェック番号をあるべき値に更新することができます。

于 2013-06-19T01:57:16.840 に答える