ResultSet的JTable显示

 

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; // 返回一条记录

    }

 

}

 

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值