数据库数据显示在java表中_JAVA中图形面板显示数据库中的信息

用JAVA编写代码,数据库中的学生信息表在图形界面中显示,图形界面做出来了,可是点击显示,却无法在界面中显示数据库中的信息,大神们,可以帮忙看看吗?

做出的图形界面:

11f8a4a6963ae2bc3b43cc38f3bf4ab5.png

当点击“显示”,下图数据库中的信息就在上面界面中显示出来

f00a85ee4307f0f337c26377df442f2c.png

图形界面没问题,可是不能讲以上信息显示,大神们可以帮我看看吗?代码: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来接收返回值:所有信息

*/

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 gs = new ArrayList();

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
    点赞
  • 13
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

西风吹浮华

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值