Java Mysql表数据输出格式

时间:2017-06-12 14:22:02

标签: java mysql sql database jdbc

这是我的MySql表:

mysql table

我想在命令行中显示查询的输出,如下所示:

enter image description here

我已经编写了下面的代码来循环,但我只得到第一行,我要修改什么?

                ResultSet rs2 = stmt.executeQuery(table_retrive);
                String[] cols = new String[itemList.size()];
                int[] rec =new int[itemList.size()];

                for (int i = 0; i < itemList.size(); i++) {

                     while (rs2.next()) {
                        cols[i] =(String) itemList.get(i);
                        rec[i] = rs2.getInt(cols[i]);
                        System.out.println(rec[i]+" ");
                       }
                        }

4 个答案:

答案 0 :(得分:0)

使用内循环是你的问题。

您可以增强代码以消除代码中第二个循环的使用,它基本上什么都不做。您可以使用递增的变量循环遍历结果集并在同一循环中循环使用相应的值。

显示的代码在您的问题中实现了一半,因此很难准确地告诉您需要做什么。不过,这是尝试为您解决问题:

while (rs2.next()) {
    System.out.println(rs2.getInt(1) + "\t |" + rs2.getString(2) + "\t |" + rs2.getString(3));
}
  

根据问题表格中的列名,假设column2和column3为String

您可以根据您的用例在此代码中添加必要的详细信息,但我只是采用了在一行中显示记录的示例。

修改

OP有自己的编程方式,但要在评论中满足他的问题 - 这就是你可以做到的。

while (rs2.next()) {
    for (int i = 0; i < itemList.size(); i++) 
    { 
        cols[i] =(String) itemList.get(i); 
        rec[i] = rs2.getInt(cols[i]); 
        System.out.print(rec[i]+"\t |"); 
    }
    System.out.println();
}

答案 1 :(得分:0)

尝试使用printf()或format()方法。它与c lang中的printf方法相同。你可以传递参数和差异。看看link1link 2

Example : System.out.printf("%d%5s%10d", 5,"|",10);
output : 5    |        10

答案 2 :(得分:0)

你的两个循环是错误的。从i=0开始,然后在整个ResultSet上迭代一次,填充第一个数组位置。完成此操作后,i会递增,您尝试再次迭代ResultSet但光标位于ResultSet的末尾,因此rs2.next()返回{{} 1}}并且代码不会被执行。

所以你有两个解决方案:

  1. 正确处理循环。不幸的是我不知道,你想要做什么,因为这是一些没有OOP的C代码,它没有显示语义,然后你有false似乎保留预设值而你读出这个列表,列出itemList个位置的列。这看起来很奇怪。也许切换循环可以实现所需:从i开始并嵌套while
  2. 使用for重置ResultSet之后while的光标。警告:这可能会抛出rs2.beforeFirst()。并非所有数据库都可以向后移动光标。这当然是一个非常难看的解决方案,因为你应该首先解析整行一次。

答案 3 :(得分:0)

使用这个,我得到了所有的值,但是在一行中:

               while (rs2.next()) {
                for (int i = 0; i < itemList.size(); i++) {

                        cols[i] =(String) itemList.get(i);
                        rec[i] = rs2.getInt(cols[i]);
                        System.out.print(rec[i]+" ");
                              }
                        }

但我需要像行一样划分。