用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; } } } }
styledboy
相关分类