【问题标题】:java mysql foreign key constraintjava mysql外键约束
【发布时间】:2015-01-28 14:08:14
【问题描述】:

所以我从数据库表中选择了一些值,将它们分成小组并将其插入到数据库中的另一个表中,但我不知道如何做到这一点,我尝试了很多方法。我设法将它们分成小组,我想将它们插入另一个表中。但我只能将值添加到表中而不分割它们。任何帮助,将不胜感激。这是我的代码。

    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);
          } 

        }

      }

}

【问题讨论】:

  • 这是一个 sql 错误尝试在控制台中打印查询变量,然后复制查询并运行到您的数据库 gui

标签: java mysql sql jdbc


【解决方案1】:

您不能在 VALUES 语句部分中使用 SELECT 语句。

将您的 SQL 查询重写为 INSERT SELECT statement

【讨论】:

    【解决方案2】:

    如果您仔细阅读您的查询:

    "insert into spelerPerTafel (lid,tafel,ronde,toernooi) VALUES( "+maxSpelersPerTafel+","+i+",0,1 "+" (SELECT lcode,tfcode FROM tafel))"
    

    您在最后一个 1 和子选择的左括号之间缺少一个逗号,即使您添加了缺少的逗号,当您只声明四列时,您也会插入 5 个值(maxSpelersPerTafel、i、9、1、子选择)插入(盖子,塔菲尔,龙德,toernooi)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多