经过一整天的研究,我迷上了应该是一段简单的代码的地方。

我只想从测试数据库中的raw_material表中获取所有记录。

这是我在做什么:

public static void fetchIthos(ArrayList<String> ithosList, UserDto user) {
        // TODO Auto-generated method stub

    //get our stuff first - raw materials and doc names and paths
    try {

        Connection conn = user.getConnection();
        Statement st = conn.createStatement();
        ResultSet rs = st.executeQuery("SELECT * FROM raw_material where object_id > 0");

        do {
        String result = rs.getString("raw_material_number").toString();
        System.out.println("next item: " + result);
        //ithosList.add(rs.getString("raw_material_number"));
        } while(rs.next());
    }

     catch (Exception e) {
       ithosList.equals(null);
        System.out.println("DB error : " + e);
     }
}


这是mySQL中的结果:

java - Java ResultSet跳过记录-LMLPHP

因此我希望第一个“结果”为MAN-500-121200000,但显示为RAW-001485

我无法在代码中的任何地方“跳过”第一条记录,但是如果我放开它,它将跳过下一条到MAN-500-056100000

我使用的用户连接错误吗?这是我能看到的唯一影响到这一点的东西。

我认为user.getConnection()只会对常规测试数据库执行此操作。

最佳答案

您的代码似乎不正确,预期的循环是:

while(rs.next()) {
    String result = rs.getString("raw_material_number");
    System.out.println("next item: " + result);
}


考虑使用try-with-resources语句来正确关闭ConnectionStatementResultSet,如下所示:

try (Connection conn = user.getConnection();
     Statement st = conn.createStatement();
     ResultSet rs = st.executeQuery("SELECT * FROM raw_material where object_id > 0")) {
    // My code here
}

关于java - Java ResultSet跳过记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39002796/

10-15 21:23