java table rs,java从ResultSet填充JTable的最简单代码

小编典典

我认为从的实例构建模型的最简单方法ResultSet如下。

public static void main(String[] args) throws Exception {

// The Connection is obtained

ResultSet rs = stmt.executeQuery("select * from product_info");

// It creates and displays the table

JTable table = new JTable(buildTableModel(rs));

// Closes the Connection

JOptionPane.showMessageDialog(null, new JScrollPane(table));

}

方法buildTableModel:

public static DefaultTableModel buildTableModel(ResultSet rs)

throws SQLException {

ResultSetMetaData metaData = rs.getMetaData();

// names of columns

Vector columnNames = new Vector();

int columnCount = metaData.getColumnCount();

for (int column = 1; column <= columnCount; column++) {

columnNames.add(metaData.getColumnName(column));

}

// data of the table

Vector> data = new Vector>();

while (rs.next()) {

Vector vector = new Vector();

for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {

vector.add(rs.getObject(columnIndex));

}

data.add(vector);

}

return new DefaultTableModel(data, columnNames);

}

更新

你喜欢用javax.swing.SwingWorker吗?你喜欢使用该try-with-resources语句吗?

public class GUI extends JFrame {

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

new GUI().setVisible(true);

}

});

}

private final JButton button;

private final JTable table;

private final DefaultTableModel tableModel = new DefaultTableModel();

public GUI() throws HeadlessException {

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

table = new JTable(tableModel);

add(new JScrollPane(table), BorderLayout.CENTER);

button = new JButton("Load Data");

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

new SwingWorker() {

@Override

protected Void doInBackground() throws Exception {

loadData();

return null;

}

}.execute();

}

});

add(button, BorderLayout.PAGE_START);

setSize(640, 480);

}

private void loadData() {

LOG.info("START loadData method");

button.setEnabled(false);

try (Connection conn = DriverManager.getConnection(url, usr, pwd);

Statement stmt = conn.createStatement()) {

ResultSet rs = stmt.executeQuery("select * from customer");

ResultSetMetaData metaData = rs.getMetaData();

// Names of columns

Vector columnNames = new Vector();

int columnCount = metaData.getColumnCount();

for (int i = 1; i <= columnCount; i++) {

columnNames.add(metaData.getColumnName(i));

}

// Data of the table

Vector> data = new Vector>();

while (rs.next()) {

Vector vector = new Vector();

for (int i = 1; i <= columnCount; i++) {

vector.add(rs.getObject(i));

}

data.add(vector);

}

tableModel.setDataVector(data, columnNames);

} catch (Exception e) {

LOG.log(Level.SEVERE, "Exception in Load Data", e);

}

button.setEnabled(true);

LOG.info("END loadData method");

}

}

2020-03-02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值