2017-02-28 65 views
0

我需要在某些代碼上再加一對眼睛。我覺得有一些簡單的我錯過了。我在我的MariaDB中有一個名爲jeff_tables的表,其中包含4個條目。我已經創建了運行run方法內的下面的代碼的實用程序線程:JDBC ResultSet不會迭代所有行

try { 
     getConnection(); 
     String query = "SELECT * FROM jeff_tables"; 
     Statement statement = connection.createStatement(); 
     ResultSet rs = statement.executeQuery(query); 
     //rs.last(); //returns 4 rows 
     //System.out.println("result set size: " + rs.getRow()); 
     while(rs.next()) { 
      Integer tenant = rs.getInt("TENANT_ID"); 
      String table = rs.getString("TABLE_NAME"); 
      System.out.println("Inserting k-v pair: " + tenant + " " + table); 
      tableNames.put(tenant, table); 
     } 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

當我取消註釋rs.last()和rs.getRow()線,它返回圖4,這是正確的數它應該返回的條目。但是,實際發生的是它進入我的while循環,爲第一行輸出正確的值,然後在put語句中拋出一個空指針。我也嘗試在線程之外運行此代碼,但它也在做同樣的事情。任何建議將不勝感激。提前致謝。

+2

顯然'tableNames'變量沒有被初始化,並且是'null' – hoaz

+0

是的,我意識到,在我發佈這個問題之後。我知道這是簡單的,我一直俯視。謝謝。 – jeffkempf

回答

0

只要我發佈這個,我看到了這個問題。這只是在嘗試向其中插入值之前忘記實例化HashMap的簡單實例。有時候需要張貼一個問題來打開你的眼睛。