【问题标题】:How to fixed the Columnsize [duplicate]如何固定列大小[重复]
【发布时间】:2018-05-23 07:56:37
【问题描述】:

我的结果集有问题。我无法获得固定长度的列。

ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
for(int i=1; i<=cols; i++)
    System.out.print(rsmd.getColumnLabel(i)+"\t");
System.out.println("\n--------------------------------------------------------------");
while(rs.next())
{

    for(int i=1; i<=cols; i++)
        System.out.print(rs.getString(i)+"\t");

    System.out.println();
}

表格是这样的

http://www.bilder-upload.eu/show.php?file=bf21f6-1527061884.png“表”

列名与数据不完全一致。

【问题讨论】:

  • 你的意思是在控制台(我不打开外部链接)?
  • 在控制台中是。列名并不完全位于数据之上。它看起来像向左移动了一点。 Imgur 在我的公司 bilder 中被阻止上传只是一个图片上传网站。
  • 您不能指望使用tab 并具有正确的对齐方式,因为\t 只会推送到下一个“列”,其中每列的长度为8(很难解释。 ..)

标签: java sql jdbc resultset


【解决方案1】:

只需使用带有格式的打印(调整到所需的长度):

ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
//format begins after 20 characters.

String format = "%-20s";

for(int i=1; i<=cols; i++)
    System.out.printf(format, rsmd.getColumnLabel(i));
System.out.println("\n--------------------------------------------------------------");
while(rs.next())
{

    for(int i=1; i<=cols; i++)
        System.out.printf(format, rs.getString(i));

    System.out.println();
}

例如:

public class FixedColumn {

    public static void main(String[] args) {
        String[] test = {"13333","2qweqwe","3dddd"};
        String[] test2 = {"dsds4","6","6e"};
        String format = "%-20s";        
        for (String s : test) {
            System.out.printf(format, s);
        }
        System.out.println();
        for (String s : test2) {
            System.out.printf(format, s);
        }

    }

}

会返回:

【讨论】:

  • 请注意,这将一直有效,直到值大于 20 个字符;)
  • 是的。已评论
  • 不,不是……否则你不明白我的意思。
  • 对我来说它可以工作,我改为 40 但它工作得很好
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 2011-08-22
  • 1970-01-01
  • 2014-01-20
相关资源
最近更新 更多