【问题标题】:rs.next() is returning false in while statementrs.next() 在 while 语句中返回 false
【发布时间】:2018-06-28 12:44:47
【问题描述】:

所以,我正在尝试从数据库中为存储在列表对象中的每个引用 Id(variable msgRefList) 提取 msgID 和 msgStatus 值,并且我正在尝试将这些提取的值存储在 String 对象中用于进一步处理。但是 rs.next() 方法返回 false,因此它不会进入赋值语句所在的 while 循环。我使用我在代码中使用的查询检查了数据库,它在结果中显示了一条记录,但 rs.next() 仍然返回 false。附有数据库结果的屏幕截图。

下面是我正在使用的实际代码

List<String> msgRefList = listofRefrnceValues:

try {
    Connection connect = connectToDB(ENV);

    for(String reference: msgRefList){

            String query="select ID, MSG_STS from TABLE where INSTR_ID = ?";
            PreparedStatement stmt = connect.prepareStatement(query);
            stmt.setString(1,reference);
            ResultSet rs = stmt.executeQuery();
            if(rs!=null){

               while(rs.next()) {

                    P_MID = rs.getString("P_MID");
                    P_MSG_STS = rs.getString("P_MSG_STS");
               }

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

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • TABLE 是保留关键字。尝试使用`TABLE`
  • executeQuery永远返回 null,因此完全没有必要进行空值检查。
  • 查询中的所有内容都不正确。你能指望什么 ?在发布问题之前至少做一些基本的水平检查。

标签: java sql resultset


【解决方案1】:

您在 java 中的 SQL-Query-String 中有一些拼写错误。而不是TABLE,您可能是指MINF(您的真实表),您的所有属性也没有前缀P_ID 可能是MID。所以改变:

String query="select ID, MSG_STS from TABLE where INSTR_ID = ?";

收件人:

String query="select P_MID, P_MSG_STS from MINF where P_INSTR_ID = ?";

你会没事的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-08
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2011-10-22
    相关资源
    最近更新 更多