首页 > 解决方案 > 打印结果集不显示所有行

问题描述

我有一些代码行

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"));
            }

在我的数据库中,我有 2 行满足条件status = 0

执行System.out.print("uid__"+re.getString("uid"));时只显示一行。我究竟做错了什么?

标签: javamysqljdbcresultsetgetstring

解决方案


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

当您使用System.out.print时,没有换行符。为了让您的打印显示,您需要打印更多以便缓冲区已满,或者您需要使用System.out.println("uid__"+re.getString("uid"));(所以每个 uid 都在自己的行上,并自动刷新),或者 - 在循环之后 - 添加一个System.out.println();(这将刷新自动)或System.out.flush()(显式刷新)。


推荐阅读