我知道我可以通过执行以下命令从特定表的一列中找到最长的字段:

Statement s;
ResultSet r;
r=s.executeQuery("SELECT MAX(LENGTH(field_to_query)) FROM table_to_query;");


但是有没有一种方法可以在Java中执行查询后在获得的ResultSet的每一列中获取最长的字段:

例:
我已经执行:

r=s.executeQuery("select * from emlployee,department where d_id=dept_id and dept_name="Research");


现在我想获得r中每一列中最长字段的长度。

谢谢

最佳答案

在这里,您创建了我的实用程序类,它将为您提供一个表示每个列的最大大小的int数组

import java.sql.ResultSet;
import java.sql.SQLException;

public class MyDbUtility {
    private MyDbUtility(){}
    public static int[] maxColumns(final ResultSet resultSet) throws SQLException {
        int columnNumber = resultSet.getMetaData().getColumnCount();
        int[] max = new int[columnNumber];
        int currentRow = resultSet.getRow();
        int fetchDirection = resultSet.getFetchDirection();
        if (fetchDirection == ResultSet.FETCH_FORWARD) {
            resultSet.beforeFirst();
        }else {
            resultSet.afterLast();
        }

        while (resultSet.next()) {
            for (int i = 1; i <= columnNumber; i++) {
                if (resultSet.getString(i).length() > max[i-1]) {
                    max[i-1] = resultSet.getString(i).length();
                }
            }
        }
        resultSet.absolute(currentRow);
        return max;
    }
}


用法

    int[] max=MyDbUtility.maxColumns(reslut);

关于java - 如何从结果集中查找每列中最长字段的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35539004/

10-15 19:36