JDBC ResultSet不迭代所有行

时间:2017-02-28 20:46:16

标签: java jdbc mariadb resultset

我需要第二双眼睛看一些代码。我觉得有一些简单的东西我不见了。我的MariaDB中有一个名为jeff_tables的表,其中包含4个条目。我创建了一个实用程序线程,它在run方法中运行以下代码:

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语句上抛出一个空指针。我也试过在一个线程之外运行这个代码,但它做的是同样的事情。任何建议将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我一发布这个,就看到了问题。这只是在尝试向其中插入值之前忘记实例化HashMap的简单实例。有趣的是,有时需要发布一个问题来睁开你的眼睛。