Java 无法使用netbeans添加或更新父行

Java 无法使用netbeans添加或更新父行,java,Java,我的代码在创建另一个表的外键时出现问题,出现以下错误: 外键约束失败(classroomanagseance,约束seance\u ibfk\u 4外键(id\u teacher)引用teacher(id) 我尝试了许多解决方案,但都不起作用。 这是我的代码: String url="jdbc:mysql://localhost:3306/classroommanag"; String login ="root"; String psswd =""; String group= jComboBo

我的代码在创建另一个表的外键时出现问题,出现以下错误:

外键约束失败(
classroomanag
seance
,约束
seance\u ibfk\u 4
外键(
id\u teacher
)引用
teacher
id

我尝试了许多解决方案,但都不起作用。 这是我的代码:

String url="jdbc:mysql://localhost:3306/classroommanag";
String login ="root";
String psswd ="";
String group= jComboBox2.getSelectedItem().toString();
int teacher=0;

try {
     Timestamp currentdate = new Timestamp((new java.util.Date().getTime()));
     jComboBox1.removeAllItems();
     Class.forName("com.mysql.jdbc.Driver");
     Connection cn = DriverManager.getConnection(url, login, psswd);
     Statement st=cn.createStatement();
     Statement stat=cn.createStatement();
     String req = " SELECT id FROM goupe WHERE groupname = '"+group+"';";
     ResultSet com = st.executeQuery(req);

     while(com.next()) {
         idgroup = com.getInt("id");}
         String re = " SELECT id FROM teacher WHERE name = '"+AuthentServer.getname()+"' and password='"+AuthentServer.getpass()+"';";
         ResultSet con= stat.executeQuery(re);
         id = con.getInt("id");
         String ti = " INSERT INTO seance (`temp`,`id_group`,`id_module`,`id_teacher`)VALUES('"+currentdate+"','"+idgroup+"','"+idgroup+"','"+id+"')";
         st.execute(ti);
         String sql = " SELECT name,etat FROM student WHERE id_goupe='"+idgroup+"';";
         ResultSet rs = stat.executeQuery(sql);

         while (rs.next()) {
             String nom=rs.getString("name");
             int etat=rs.getInt("etat");

             if(etat==1) {
                 jComboBox1.addItem(nom+"   connected");
                 currentdate=new Timestamp(new java.util.Date().getTime());
                 String  date=currentdate.toString().substring(0,10);
                 String nomDossier="C:/wamp/www/cmsEnseignant/Travaux/"+group+"/"+nom+"/"+date;
                 File dir = new File (nomDossier);
                 if(!dir.isDirectory()) {
                     dir.mkdirs();
                 }
             }
             else {
                 jComboBox1.addItem(nom+"   not connected");
                 currentdate=new Timestamp(new java.util.Date().getTime());
                 String  date=currentdate.toString().substring(0,10);
                 String nomDossier="C:/wamp/www/cmsEnseignant/Travaux/"+group+"/"+nom+"/"+date;
                 File dir = new File (nomDossier);
                 if(!dir.isDirectory()) {
                     dir.mkdirs();
                 }
             }
         }
     }
}
catch (ClassNotFoundException ex) {
    Logger.getLogger(WorkSpace.class.getName()).log(Level.SEVERE, null, ex);
}
catch (SQLException ex) {
    Logger.getLogger(WorkSpace.class.getName()).log(Level.SEVERE, null, ex);
}

外键约束失败
通常发生在您尝试向父表中不存在的子表插入数据时。与在
seance
表中一样,
id\u teacher
是引用
teacher
表中的
id
的外键,那么作为
id\u teacher
插入到
seance
表中的id必须作为主键
id
出现在
teacher
表中

更新:

在代码中,使用
ResultSet con=stat.executeQuery(re)执行查询之后,使用
id=con.getInt(“id”)直接获取值

但如果您看到的官方文档中有:

ResultSet对象维护一个光标,该光标指向其当前的数据行 数据。最初,光标位于第一行之前。这个 next方法将光标移动到下一行,因为它返回 false当ResultSet对象中没有更多行时,可以将其删除 在while循环中用于迭代结果集

所以,这一行应该可以解决你的问题。由于您没有使用任何
next()
方法,因此光标位于第一行之前,这是外键的无效数据。这就是为什么你会出错

要解决这个问题,如果您的查询应该返回多行,或者您可以使用while循环和
con.next()
迭代所有行
con.next()
一次,如果它只返回一行数据。

也许你可以从我放代码的图像开始是的,我放了,但它不起作用,并且有“教师”表的结构:带图像的代码很难调试。你能在这里或其他地方发布完整的代码并提供链接吗?@TimaFatimz我已经更新了答案,看看它…希望这能解决你的问题:)谢谢你,我想是的,但尝试后仍然会出现同样的错误,不知道为什么