stmt = getStatement(conn);
sql="select * from TB_IOT_POINT where NetAddr='"+deviceid+"'";
rs = getRS(sql, stmt);
System.out.println(sql+"-----sql");
try {
while (rs.next()) {
System.out.println("-----"+rs.getString("NetAddr"));
if (rs.getString("NetAddr").equals(deviceid)) {
System.out.println(rs.getString("PointID")+"-------");
return rs.getString("PointID");
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

解决方案 »

  1.   

    怎么又发了一个同样的问题。因为你while循环里有一句
    return rs.getString("PointID");循环一次就return,跳出循环了。
      

  2.   

    我的while循环只循环了一次,没有找到rs.getString("NetAddr").equals(deviceid)这条记录,
    但我的数据库中有这条记录啊。
      

  3.   

    我确实没看懂楼主的用语。
    sql都找了where NetAddr='"+deviceid+"'"
    为什么后面还加个判断 rs.getString("NetAddr").equals(deviceid)。
    即使加了也就算了
    你也应该把结果存入list中。就return 一条结果,是完全按照你的程序来的。
      

  4.   

    一句话
    System.out.println(rs.getString("PointID") + "-------");这一句有没有执行?
    执行了就return了,不走循环了。还有试试下面的代码,要是count就是你sql返回的行数,说明while循环是没有问题的。 stmt = getStatement(conn);
    sql = "select * from TB_IOT_POINT where NetAddr='" + deviceid + "'";
    rs = getRS(sql, stmt);
    int count = 0;
    try {
    while (rs.next()) {
    count++;
    }
    System.out.println(count);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      

  5.   

    我的原意是这样的,sql="select * from TB_IOT_POINT;
    while(rs。next)只循环了一次,而我的表中不止一条,也没有返回我要找的那条记录
      

  6.   

    按照5楼的代码,打印出来的count是多少?
    是1的话,我就无话可说了,自己研究吧
      

  7.   

    你把 return 去掉,试试。
      

  8.   

    你用return滴话就是表示跳出了循环,去掉return试一试....
      

  9.   

    使用hasNext吧  吧next放到循环里面去,这样应该可以吧
      

  10.   

    if (rs.getString("NetAddr").equals(deviceid)) {   //equals是比较字符串吗???
    System.out.println(rs.getString("PointID")+"-------");  //这句话未执行。
    return rs.getString("PointID"); //直接return退出了。