ResultSet的JTable显示

来源:互联网 发布:网络兼职都干什么 编辑:程序博客网 时间:2024/06/05 08:29

 

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Vector;

 

import javax.swing.JOptionPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

 

public class Utilities {

    /**

     * 功能:实现结果集的表格显示

     */

    public static void displayResultSet(JTable table, ResultSet rs)

            throws SQLException {

        //

        rs.beforeFirst();// 指针移到第一条记录前面

        boolean hasRecords = rs.next();

 

        if (!hasRecords) { // 记录集为空,提示一条消息

            JOptionPane.showMessageDialog(table, "无相关记录", "Check your input!",

                    JOptionPane.ERROR_MESSAGE);

            return;

        }

 

        Vector<String> columnHeads = new Vector<String>();// 用于存储表头字段(列名)

        Vector<Vector> rows = new Vector<Vector>();// 用于存储记录行

        try {

            // 获取字段的名称

            ResultSetMetaData rsmd = rs.getMetaData();

            for (int i = 1; i <= rsmd.getColumnCount(); ++i)

                columnHeads.addElement(rsmd.getColumnName(i));

 

            do {// 获取记录集

                rows.addElement(getNextRow(rs, rsmd));

            } while (rs.next());

            // 建立相应的TableModel,并将TableModel应用到Table中显示出来

            DefaultTableModel model = new DefaultTableModel(rows, columnHeads);

            table.setModel(model);

            return;

        } catch (SQLException exc) {

            JOptionPane.showMessageDialog(table, exc.toString(),

                    "Check your input!", JOptionPane.ERROR_MESSAGE);

            return;

        }

    }

 

    /**

     * displayResultSet(JTable table, ResultSet rs)调用, Vector形式返回一个记录行

     */

    private static Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)

            throws SQLException {

        Vector<String> currentRow = new Vector<String>();

        for (int i = 1; i <= rsmd.getColumnCount(); ++i)

            currentRow.addElement(rs.getString(i));

        return currentRow; // 返回一条记录

    }

 

}

 

 
原创粉丝点击