使用Java查询从数据库中选择值,并将其用作变量,然后将其插入另一个表中

使用Java查询从数据库中选择值,并将其用作变量,然后将其插入另一个表中,java,mysql,sql,netbeans,jdbc,Java,Mysql,Sql,Netbeans,Jdbc,所以我从一个数据库表中选择了一些值,将它们分成几个小组,然后将它们插入到数据库中的另一个表中,方法是将所选的值放入ArrayList中,并计算该ArrayList的大小 但在我计算完之后,我只剩下包含我需要的信息的变量了。但是,我不能把它们放在另一张表中,因为它们与我一开始选择的东西不一样。它们现在只是数字。我真的需要将这些变量插入到另一个表中,但当我这样做时,我得到外键约束失败错误,我认为这是因为变量不再是外键,而只是一个数字。我不知道是否有解决办法,但它会帮助我分配。这是我的密码: priv

所以我从一个数据库表中选择了一些值,将它们分成几个小组,然后将它们插入到数据库中的另一个表中,方法是将所选的值放入ArrayList中,并计算该ArrayList的大小

但在我计算完之后,我只剩下包含我需要的信息的变量了。但是,我不能把它们放在另一张表中,因为它们与我一开始选择的东西不一样。它们现在只是数字。我真的需要将这些变量插入到另一个表中,但当我这样做时,我得到外键约束失败错误,我认为这是因为变量不再是外键,而只是一个数字。我不知道是否有解决办法,但它会帮助我分配。这是我的密码:

private void spelersVerdelenMouseClicked(java.awt.event.MouseEvent evt) {                                             

String comboBoxValue = jComboBoxDeelnemer.getSelectedItem().toString();
String spelerRonde1 = "SELECT lid, toernooi FROM deelnemer where     toernooi LIKE " + comboBoxValue ; 

ArrayList<String> dlnmrs = new ArrayList<>();
try {

  PreparedStatement pstat = con.prepareStatement(spelerRonde1);
  ResultSet rs = pstat.executeQuery();
    while (rs.next()) {

        dlnmrs.add(rs.getString("lid"));
        for (int i = 0; i < dlnmrs.size(); i++) {
        }
    }

} catch (Exception e) {
    JOptionPane.showMessageDialog(rootPane,e);
}

verdeelTafels(1, dlnmrs.size()); 

private void verdeelTafels(int ronde, int aantalDeelnemers) {

System.out.println(aantalDeelnemers);

int aantalTafels = (int) aantalDeelnemers / AANTAL_SPELERS_PER_TAFEL;
int restSpelerPerRonde = aantalDeelnemers % AANTAL_SPELERS_PER_TAFEL;

if (aantalDeelnemers == (AANTAL_SPELERS_PER_TAFEL * 2)) {
    aantalTafels = 1;
    restSpelerPerRonde = 0;
}

for (int i = 0; i < aantalTafels; i++) {
    int maxSpelersPerTafel = AANTAL_SPELERS_PER_TAFEL;
    if (i == aantalTafels - 1) {
        maxSpelersPerTafel += restSpelerPerRonde;
    }
    System.out.println("Tafel " + (i + 1) + " heeft " + maxSpelersPerTafel + " deelnemers.");

    //spelersDoorlopen

    for (int j = 0; j < maxSpelersPerTafel; j++) {

  String query = "insert into spelerPerTafel (lid,tafel,ronde) select lcode,tfcode,rcode from lid,tafel,ronde ";
  try{ 
         PreparedStatement pstat = con.prepareStatement(query);

         pstat.execute(query);
      }
  catch (Exception e) {
    JOptionPane.showMessageDialog(rootPane,e);
        System.out.println(e);
      } 

    }

  }

}
试一试

字符串查询=插入表格A,从表格B中选择*其中XXX

使用where条件可以实现表b的划分


您可以显示您的表定义吗?此sql语句插入到spelerPerTafel lid、tafel、ronde select lcode、tfcode、rcode from lid、tafel、ronde中的格式不正确。您是否从其他表中获取要插入的信息?在这种情况下,你需要命名它。否则您需要使用VALUESval,val,…表格lid有ALOT oft列:lcode是我们这里唯一需要的表格tafel有tfcode列,MAXAANTALSPELER列,MINANTALSPELER列。表格ronde有rcode列,AantalRonde列,tijdstip列,toernooi表格SPELERPTAFEL有lid列,tafel列,ronde外键lid引用lid外键的lcode tafel引用tafel外键的tfcode ronde引用Rondozan的rcode,好的,但您的问题与fk约束有关,因此,不知道表定义很难给出明确的答案。ow和添加如您所示的值会导致外键约束错误canot update child row等,因为变量不包含我需要的外键。它们只是数字