2014-05-21 42 views
0

所以我做了一個查詢,它是一個內部連接,查詢很好。但我想將從數據庫中選擇的數據放入另一個類的變量中。Netbeans把查詢中的數據放到一個變量中

你看到代碼

Spel spel = null; 
spel.setNaamSpel(spelUniekeNaam); 

我沒有做到這一點,但所有這是做正確的方式?

public void laadSpel(String spelNaam) 
{ 
    String LAAD_SPELERS_SQL = "SELECT spel.naam, spel.aantalTeSpelenRondes, speler.naam, speler.kleur, speler.sector, speler.aantalZilverstukken, spelbord.type, spelbord.ecoWaarde, spelbord.stratWaarde, " 
      + "spelbord.xcoord, spelbord.ycoord, spelbord.aantalKamelen, spelbord.kleur" + 
     "From spel INNER JOIN speler ON spel.naam = speler.Spel_naam" + 
       "INNER JOIN spelbord ON spel.naam = spelbord.Spel_naam" + 
      "WHERE spel.naam = '" + spelNaam + "'"; 



    Statement statement; 
    Connection connection = PersistentieController.getInstance().getConnection(); 


    try 
    { 
     statement = connection.createStatement(); 
     ResultSet resultset = statement.executeQuery(LAAD_SPELERS_SQL); 

     while (resultset.next()) 
     { 
      String spelUniekeNaam = resultset.getString("spel.naam"); 
      String spelAantalRondes = resultset.getString("spel.aantalTeSpelenRondes"); 
      String spelerNaam = resultset.getString("speler.naam"); 
      String spelerKleur = resultset.getString("speler.kleur"); 
      int spelerSector = resultset.getInt("speler.sector"); 
      int spelerKrediet = resultset.getInt("speler.aantalZilverstukken"); 
      String spelbordType = resultset.getString("spelbord.type"); 
      int spelbordEco = resultset.getInt("spelbord.ecoWaarde"); 
      int spelbordStrat = resultset.getInt("spelbord.stratWaarde"); 
      int spelbordX = resultset.getInt("spelbord.xcoord"); 
      int spelbordY = resultset.getInt("spelbord.ycoord"); 
      int spelbordAantalKamelen = resultset.getInt(("spelbord.aantalKamelen")); 
      String spelbordKleur = resultset.getString("spelbord.kleur"); 

      Spel spel = null; 
      spel.setNaamSpel(spelUniekeNaam); 


     } 

     statement.close(); 

    } catch (SQLException e) 

    { 
     e.printStackTrace(); 
    } 
    } 

回答

0

  1. 你的其他類Spel變量將不存在在while循環的外部。
  2. 將使用結果集中遍歷的每個新記錄覆蓋spelUniekeNaam
  3. 請避免在SQL查詢中使用字符串連接,正如我在之前的文章here中指出的那樣。這只是要求進行SQL注入攻擊。
+0

Oke我會改變,但我如何將選定的數據存儲到spel.setNaamspel? – user3639969

+0

取決於你在做什麼。如果你需要'laadSpel'之外的對象,那麼你必須返回這個'spel'對象,或者將一個空的'spel'作爲參數傳遞給方法。 – Abhi

+0

考慮到您不知道將從SQL查詢返回多少結果,可以使用'ArrayList'來創建一個將保存數據庫表中信息的對象'數組'。 – Abhi