2010-11-24 4 views
1

JConnector를 실행하여 데이터베이스에서 데이터를 가져옵니다 (mysql 사용). Secure Shell에서 쿼리를 실행하여 데이터를 검사했는데 정상적으로 작동했습니다. 그러나, 내 프로그램을 실행할 때 NullPointerException 던져, 첫 번째 행을 읽습니다. 나는 한 달 동안 자바를 배웠다. 그래서 내 질문이 너희들에게 이상하게 들리더라도 미안하다. 이것은 내가 내 테이블 생성 쿼리입니다executeQuery()를 실행하는 동안 발생할 수있는 예외는 무엇입니까

private void loadNodesFromDatabase() 
    { 
     Statement stmt = Database.connect(); 
     String query = "SELECT * FROM Node"; 
     ResultSet res; 
     try 
     { 
      res = stmt.executeQuery(query); 
      while(res.next()) 
      { 
       Integer id = res.getInt("Id"); 
       String position = res.getString("Position"); 
       String rule = res.getString( "RuleOnMap"); 
       Integer foodTax = res.getInt( "FoodTax"); 
       boolean mapValue = res.getBoolean("MapValue"); 

       Node n = new Node(id, PointOnGraph.parse(position), Node.RuleOnMap.valueOf(rule), foodTax, mapValue); 
       System.out.println(n); 
       nodes.add(n); 
      } 
      res.close(); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Selection Error: " + e); 
     } 
    } 

: 이 내 코드입니다

mysql> CREATE TABLE Node (Id INT(3), Position VARCHAR(12), RuleOnMap VARCHAR(6), FoodTax INT(2), MapValue TINYINT(1), PRIMARY KEY(Id)); 

는 그리고 이것은 이클립스에서 오류 메시지입니다 :

(1, '20,20,88', PAY, 10, false) 
Selection Error: java.lang.NullPointerException 
... 

감사합니다,

e.printStackTrace()를 호출 한 후;

(1, '20,20,88', PAY, 10, true) 
Selection Error: java.lang.NullPointerException 
java.lang.NullPointerException 
    at Game.Game.loadNodesFromDatabase(Game.java:177) 
    at Game.Game.<init>(Game.java:31) 
    at Test.GameLoadDatabseTest.loadNodesTest(GameLoadDatabseTest.java:30) 
    at Program.main(Program.java:39) 
Exception in thread "main" java.lang.NullPointerException 
    at Test.GameLoadDatabseTest.loadNodesTest(GameLoadDatabseTest.java:32) 
    at Program.main(Program.java:39) 

안부,

처음 n과 같은
+0

안녕하세요, Chan 님, 예외가 발생하는 행을 알 수 있습니까? 메시지에 표시되어야합니다 (그렇지 않으면 예외의 처음 몇 줄을 여기에 게시하십시오). 또한 하나의 노드를 읽은 후 또는 전에 노드가 throw 된 예외입니까? – Joel

+0

안녕하세요 Joe, 독서에 감사드립니다. 첫번째 루프를 읽은 후 (즉, while 루프에서) 예외가 발생했습니다. – Chan

+0

아니요, 그는 예외를 잡아 내고'System.out.println (...) '을 사용하여 인쇄합니다.'System.out.println (...)'메소드는 클래스 이름과 메시지를 기본으로하는'Exception.toString()'메소드 만 호출합니다. 스택 추적을 포함하십시오. 스택 트레이스를 출력하고 싶다면'e.printStackTrace()'를 사용해야한다. – Reboot

답변

2

찬 응웬 바로 출력됩니다?

내 경우는 nodesnull입니다. 목록을 초기화하는 것을 잊었습니까?

+0

^_ ^! 정확히 내 문제;)! 당신은 그런 놀라운 추측을 가지고 있습니다! 대단히 감사합니다! – Chan

+0

참고 : 일반 예외를 catch하지 마십시오. 실제로 던져 질 수있는 구체적인 예외를 항상 잡습니다. –

관련 문제