我在javaFX/SQL中的库应用程序有点问题

我在javaFX/SQL中的库应用程序有点问题,java,mysql,javafx,phpmyadmin,Java,Mysql,Javafx,Phpmyadmin,我的LibraryApp有一个小问题,因此我的控制台显示该错误: 在PHPmyAdmin中,我创建了几个表: 我把它们连在一张桌子上: 但是,当我想添加新的lend phpMYAdmin时,它的工作非常完美 下面是应该添加到应用程序和数据库的代码: @Override public boolean addLend(int userId, int bookId, String returnDate) { try { PreparedStatement p

我的LibraryApp有一个小问题,因此我的控制台显示该错误: 在PHPmyAdmin中,我创建了几个表:

我把它们连在一张桌子上:

但是,当我想添加新的lend phpMYAdmin时,它的工作非常完美

下面是应该添加到应用程序和数据库的代码:

 @Override
public boolean addLend(int userId, int bookId, String returnDate) {
    try {

        PreparedStatement preparedStatementInsert = connector.getPreparedStatement(
                "INSERT INTO lend VALUES(?,?,?,?,?)");

        preparedStatementInsert.setInt(1, 0);
        preparedStatementInsert.setInt(2, userId);
        preparedStatementInsert.setInt(3, bookId);
        preparedStatementInsert.setString(4, returnDate);
        preparedStatementInsert.setTime(5, null);
        preparedStatementInsert.execute();
        preparedStatementInsert.close();
        return true;
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
}




private void tryAddLend() {
    int userId = (textCustomeridAddLend.getText().trim().length());
    int bookId = (textbookidAddLend.getText().trim().length());
    String returnDay = textReturnDayAddLend.getText();

    if (!checkAddLendData()) {
        return;
    }

    if (mainDao.addLend(userId, bookId, returnDay)) {

        Utils.createSimpleDialog("login", "", "added correctly");
    } else {
        Utils.createSimpleDialog("login", "", "error");
    }
    loadLends();
}

堆栈跟踪图像链接几乎不可读,但我确实非常清楚地看到了违反约束的错误。这种错误通常意味着您正在添加一个子记录,该子记录指向另一个不存在的表中的父记录。我怀疑这个查询在PHP管理员那里运行得很好;我认为它也会失败。堆栈跟踪中的错误非常明显(您应该粘贴跟踪,而不是图像),您违反了外键约束:lend_ibfk_1。在数据库中找不到已建立的用户id。最好显示用于创建表的SQL语句(作为文本),而不是发布phpMyAdmin的屏幕截图。另外,最好将stacktrace作为代码块而不是屏幕截图发布。。。