2014-05-21 1 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. 이전 게시물의 here에서 지적한 것처럼 SQL 쿼리에 문자열 연결을 사용하지 마십시오. 이것은 SQL Injection 공격을 요구하는 것입니다.
+0

내가 변경 하겠지만 선택한 데이터를 어떻게 spel.setNaamspel에 저장할 수 있습니까? – user3639969

+0

당신이 무엇을하고 있는지에 따라 다릅니다. 오브젝트가'laadSpel' 외부에 필요하다면,이'spel' 오브젝트를 다시 전달하거나 메소드에 매개 변수로 빈'spel'을 가져와야합니다. – Abhi

+0

SQL 쿼리에서 얼마나 많은 결과가 반환 될지 모르기 때문에 DB 테이블의 정보를 보유 할 객체의 '배열'을 만드는 데 사용할 수있는'ArrayList '를 살펴보십시오. – Abhi

관련 문제