Java 打印结果集不会';不显示所有行

Java 打印结果集不会';不显示所有行,java,mysql,jdbc,resultset,getstring,Java,Mysql,Jdbc,Resultset,Getstring,我有一些代码行 Class.forName("com.mysql.cj.jdbc.Driver"); connect = DriverManager .getConnection("jdbc:mysql://localhost/"+Contant.DB_NAME+"?useUnicode=true&useJDBCCompliantTimezoneShift=true&

我有一些代码行

Class.forName("com.mysql.cj.jdbc.Driver");
            connect = DriverManager
                    .getConnection("jdbc:mysql://localhost/"+Contant.DB_NAME+"?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&"
                            + "user="+Contant.MYSQL_USER+"&password="+Contant.MYSQL_PASS);  
            statement = connect.createStatement();
          preparedStatement = connect.prepareStatement("select * from history where status = 0");
           re = preparedStatement.executeQuery();
          while (re.next()) {
                System.out.print("uid__"+re.getString("uid"));
            }
在我的数据库中,有两行符合条件
status=0


当执行
System.out.print(“uid_uu”+re.getString(“uid”))时它只显示一行。我做错了什么?

默认情况下,分配给
System.out
PrintWriter
是缓冲的,这意味着如果缓冲区已满,或者添加了新行字符的内容,它将收集字符并刷新它们


使用
System.out.print
时,没有新行字符。要使打印内容显示出来,您需要打印更多内容,以便缓冲区已满,或者您需要使用
System.out.println(“uid\uuu”+re.getString(“uid”)(因此每个uid都在自己的行上,并自动刷新),或者在循环之后添加一个
System.out.println()
(将自动刷新)或
System.out.flush()
(显式刷新)。

如果您使用
println
而不是
print
,您将看到打印的是两个值,而不是两倍长度的单个值。--如果您认为有1条记录的状态为0,并且没有打印任何内容,那么请检查您的假设,包括确保已提交对表的任何更改。您应该在while循环中使用re.hasNext(),在while中获取一个值,例如String value=re.getString(“uid”)@AlexanderMakarov结果集没有
hasNext()
方法。如图所示,使用
next()
是正确的用法。code未运行到{}of while循环中,我不知道为什么?编辑该问题是为了使其更有意义。code未运行到{}of while循环中,我不知道为什么?@Homerux的常见原因是您没有任何行,如果在另一个会话中插入行,则可能发生这种情况,但没有提交该会议。