用JAVA编写代码,数据库中的学生信息表在图形界面中显示,图形界面做出来了,可是点击显示,却无法在界面中显示数据库中的信息,大神们,可以帮忙看看吗?做出的图形界面:当点击“显示”,下图数据库中的信息就在上面界面中显示出来图形界面没问题,可是不能讲以上信息显示,大神们可以帮我看看吗?代码:import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class SM extends JFrame implements ActionListener{// 学生信息管理
int width=600; //窗体的宽度
int height=400;//高度
JTable sTable;//
TableModel model;//表模型
JScrollPane scroll;//带滚动条的面板
Object[][] playerInfo;//存放表格中的数据
Object[] columnNames;//定义表格中的列名
JPanel p1 = new JPanel();
JPanel p = new JPanel();
Connection con = null;// conn获取链接
Statement stmt = null;// 通过链接创建Statement对象stmt,在通过stmt对象执行sql语句
ResultSet rs = null;// 定义rs接收executeQuery()方法返回的ResultSet对象,查询的数据就存放在rs对象中
//首先创建菜单栏
JMenuBar bar = new JMenuBar();
//创建文件菜单
JButton btnAdd = new JButton("增加");
JButton btnDelete = new JButton("删除");
JButton btnAlter = new JButton("修改");
JButton btnSearch = new JButton("查询");
JButton btnDisplay = new JButton("显示");
JButton back = new JButton ("返回上一级");
SM(){//构造函数
super("学生信息管理系统");
this.setSize(width, height);
init();
this.setVisible(true); // 显示窗体
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗体的关闭方式,点击小叉退出应用程序
}
public void init() {
add("South", p);
this.add("Center", p1);
//菜单栏上添加菜单
bar.add(btnDisplay);
bar.add(btnAdd);
bar.add(btnDelete);
bar.add(btnAlter);
bar.add(btnSearch);
bar.add(back);
//给窗体添加菜单栏
this.setJMenuBar(bar);
//设置窗体的位置
int screen_width = (int)this.getToolkit().getScreenSize().getWidth(); //得到屏幕的宽度
int screen_height = (int)this.getToolkit().getScreenSize().getHeight(); //得到屏幕的高度
this.setLocation((screen_width-width)/2, (screen_height-height)/2);
this.setResizable(false);//true,则使 窗体大小可变,否则大小不可变
this.setVisible(true);//true,则使 窗体 可见,否则隐藏 窗体
//为组件注册事件监听器
btnAdd.addActionListener(this);
btnDelete.addActionListener(this);
btnAlter.addActionListener(this);
btnSearch.addActionListener(this);
btnDisplay.addActionListener(this);
back.addActionListener(this);
}
public void connDB() { // 连接数据库
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection("jdbc:sqlserver://localhost:1434;DatabaseName=DBstudent", "sa",
"1234567890");
stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void closeDB() // 关闭连接
{
try {
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/*
* 显示所有学生的信息所以定义一个ModelST类的集合List<ModelST>来接收返回值:所有信息
*/
public void dispose() {
int j=0;
int i=0;//记录数据库中有好多组信息
String[] columnNames = { "学号", "姓名", "年龄", "性别", "院系" };
this.connDB();// 连接数据库
/*
* 调用stmt对象的executeQuery()方法,查询数据库的信息
* executeQuery()方法的返回只是ResultSet对象,定义rs接收返回的ResultSet对象 查询的数据就存放在rs对象中
*/
try {
rs = stmt.executeQuery("select * from student order by sno");
List<ModelST> gs = new ArrayList<ModelST>();
ModelST g = null;
/*
* rs对象的next()方法获取数据,若返回true证明对象中有数据 通过while循环将对象中的数据打印出啦。
*/
while (rs.next()) {
g = new ModelST();
g.setSno(rs.getInt("sno"));
g.setDept(rs.getString("sd"));
g.setName(rs.getString("sn"));
g.setAge(rs.getInt("sa"));
g.setSex(rs.getString("ss"));
gs.add(g);
i++;
}
playerInfo = new Object[i][5];
for (ModelST go : gs) {
playerInfo[j][0] = g.getSno();
playerInfo[j][1] = g.getName();
playerInfo[j][2] =g.getAge();
playerInfo[j][3] = g.getSex();
playerInfo[j][4] = g.getDept();
j++;
}
//初始化表模型,利用子类DefaultTableModel生成TableModel接口对象
model=new DefaultTableModel(playerInfo, columnNames);
sTable = new JTable(model);//初始化JTable
//初始化带滚动条的面板
scroll = new JScrollPane();
scroll.getViewport().add(sTable);
this.getContentPane().add(scroll);
this.closeDB();
}catch (SQLException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "显示") {
/*JOptionPane.showConfirmDialog(null, "进入学生界面", "提示信息", JOptionPane.DEFAULT_OPTION,
JOptionPane.OK_OPTION);
*/
this.dispose();
}if (e.getActionCommand() == "返回上一级") {
int result = JOptionPane.showConfirmDialog(null, "您真的要退出系统吗?", "提示信息", JOptionPane.OK_CANCEL_OPTION);
if(result==JOptionPane.OK_OPTION)
{
System.exit(0); //退出系统
}
else
{
return;
}
}
}
}
添加回答
举报
0/150
提交
取消