2017-02-28 69 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的简单实例。有时候需要张贴一个问题来打开你的眼睛。