day3 数据库显示3
由于游戏有排行榜功能,即需要将数据库存储数据展示出来,要做排序的话请在数据库中自行操作~
package db;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import game.InputId;
import game.Screen;
public class Rank extends JFrame{
// 声明滚动面板
public JScrollPane spTable;
// 声明一个盛放按钮的面板
public JPanel pButtons;
public JButton btnFlush;
// 声明默认表格模式
public DefaultTableModel model;
// 声明表格
public JTable table;
public Rank() {
// 创建默认表格模式
model = new DefaultTableModel();
// 创建表格
table = new JTable(model);
// 设置表格选择模式为单一选择
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 创建一个滚动面板,包含表格
spTable = new JScrollPane(table);
// 将滚动面板添加到窗体中央
this.add(spTable, BorderLayout.CENTER);
//创建按钮
btnFlush = new JButton("刷新");
// 创建面板
pButtons = new JPanel();
// 将按钮添加到面板中
pButtons.add(btnFlush);
// 将盛放按钮的面板添加到窗体的南部(下面)
this.add(pButtons, BorderLayout.SOUTH);
btnFlush.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 调用显示数据的方法
showData();
}
});
// 初始化显示表格数据
this.showData();
this.setSize(300,200);
this.setTitle("排行榜");
this.setVisible(true);
this.setLocationRelativeTo(null);
}
private void showData() {
// 展示rank表
String sql = "select * from adie.dbo._rank";
// 数据库访问
try {
Connection con = DBUtil.getConnection();
PreparedStatement pstmt;
ResultSet rs;
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();// 执行SQL语句
ResultSetMetaData rsmd = rs.getMetaData();
// 获取列数
int colCount = rsmd.getColumnCount();
// 存放列名
Vector<String> title = new Vector<String>();
// 列名
for (int i = 1; i <= colCount; i++) {
title.add(rsmd.getColumnLabel(i));
}
// 表格数据
Vector<Vector<String>> data = new Vector<Vector<String>>();
int rowCount = 0;
while (rs.next()) {//处理结果集
rowCount++;
// 行数据
Vector<String> rowdata = new Vector<String>();
for (int i = 1; i <= colCount; i++) {
rowdata.add(rs.getString(i));
}
data.add(rowdata);
}
if (rowCount == 0) {
model.setDataVector(null, title);
} else {
model.setDataVector(data, title);
}
//关闭,释放资源
rs.close();
pstmt.close();
con.close();
} catch (Exception ee) {
System.out.println(ee.toString());
JOptionPane.showMessageDialog(this, "系统出现异常错误。请检查数据库。系统即将退出!!!",
"错误", 0);
}
}
}