Результат таблицы формата вывода Java SQL - PullRequest
1 голос
/ 27 сентября 2011

У меня все работает, и выводит правильный результат с заголовком (именем столбца) и значением. Однако я хотел изменить простой и неорганизованный результат в действительно хороший формат выходной таблицы, такой же, как результат таблицы MySql со штриховыми линиями из запроса. Как мне это сделать?

Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM quarter");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
for(int i = 1; i <= numberOfColumns; i++)
{
    System.out.print(rsMetaData.getColumnLabel(i) + " ");
}
System.out.println();
while (rs.next())
{
    for(int e = 1; e <= rsMetaData.getColumnCount(); e++)
    {
        System.out.print(rs.getString(e) + " ");
    }
    System.out.println();
}

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Вы можете использовать String.format() метод с подходящей строкой формата .

Например,

StringBuilder sb=new StringBuilder();

for(int i = 1; i <= numberOfColumns; i++)
{
    sb.append(String.format("| %-10s",rsMetaData.getColumnLabel(i)));
}
0 голосов
/ 01 марта 2014

Вы можете иметь функцию для этого. При необходимости измените параметр при вызове.

public static void printHeader(ResultSet rs, char symbol, int width) throws Exception 
{
    ResultSetMetaData rsmd = rs.getMetaData();
    int nCols = rsmd.getColumnCount();
    for(int i = 1; i <= nCols; ++i)
          System.out.printf("%-10s ", rsmd.getColumnLabel(i));

     System.out.printf("\n");
     for(int i = 0; i < width; ++i)
        System.out.printf("%c", symbol);
}

//call <br>
printHeader(rs,'-',70);
...