Java Swing之JTable连接Mysql数据库显示数据示例

        作者前面写过《Java Swing之JTable示例》一文,该文中通过两种JTable构造方法创建了表格对象,并展示了部分常用方法。本文在前面创建表格的基础上,使用JDBC连接数据库,用表格显示某一数据库表信息。通过该例,读者可以举一反三,拓展表格操作有关功能,实现获取表格某一记录信息并修改、删除,实现对表格的美化,实现显示符合条件的数据表信息等。

        关于JDBC连接数据库,如读者需要,可参考作者的《JDBC实现Mysql数据库的连接与应用》一文。在本示例中,使用面向对象的思想对数据库的连接做了封装,读者可参考继续完善形成可复用的数据库操作类。

        1.创建数据库

        在Mysql中创建名称为“student”的数据库,按照表1结构创建一个studentinfo表,按照表2内容添加记录内容。

        本示例中用到的数据库表结构如表1所示。        

表1 学生信息表结构

字段名称

字段类型

字段大小

约束

备注

stuid

varchar

4

主键

学号

stuname

varchar

10

姓名

stutel

varchar

11

联系方式

stuschool

varchar

20

学校名称

stupro

varchar

20

专业名称

        数据表内容如表2所示。

表2 学生信息表

Stuid

Stuname

Stutel

Stuschool

Stupro

1001

张三

13312345678

职业学院

软件技术

1002

李思

13112345678

职业学院

软件技术

1003

李武

13212345678

职业学院

软件技术

1004

王舞

13312345678

职业学院

软件技术

1005

赵柳

13412345678

职业学院

软件技术

1006

赵谦

13512345678

职业学院

软件技术

1007

杨杨

13312345678

职业学院

大数据技术

1008

柳柳

13432145687

职业大学

大数据技术

1009

张航

13512345695

职业大学

大数据技术

1010

李蒙

13132165444

技术学院

人工智能

1011

王向

13032654780

技术学院

人工智能

1012

郭果

12578963254

科技大学

云计算技术

1013

张燕

13612365478

科技大学

云计算技术

        2.创建数据库连接操作类

        本例中用到的数据连接字符串中有关信息要根据读者部署的开发环境对应设置。

        数据库连接类的代码如下。读者可以针对数据库表的增加、删除、修改、查询操作补充自定义方法进一步完善连接操作类。

import java.sql.*;
public class ConnectDB {
    Connection conn ;
    Statement stmt;
    public ConnectDB() throws ClassNotFoundException, SQLException {
        //1.加载驱动程序:com.mysql.cj.jdbc.Driver是添加的外接库
        Class.forName("com.mysql.cj.jdbc.Driver"); 
        //2.连接数据库
        //2.1 构造连接字符串
        String url = "jdbc:mysql://localhost:3306/student";//数据库服务器地址及连接数据库名称
        String user = "root";//确定连接用户,使用系统提供的root用户
        String pwd = "123456";//使用设定的root用户密码
    //2.2 使用DriverManager连接数据库
        conn = DriverManager.getConnection(url,user,pwd);
    //3.创建语句执行体对象,用来执行关于sql语句的相关方法
        stmt = conn.createStatement();
    } 
//关闭记录集、关闭语句执行体、关闭连接
    public void closecnndb() throws SQLException {
        stmt.close();
        conn.close();
    }
}
        3.创建表格显示数据

        创建一个JFrame窗体,在期内添加JTable表格,为表格添加滚动条。表格显示从数据库student的表格studentinfo中的所有记录。相关知识已经在作者有关博文中介绍,不再赘述。本程序实现代码如下。       

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JTableShowMysqlDataDemo  extends JFrame{
	public JTableShowMysqlDataDemo() throws ClassNotFoundException, SQLException {
		inigui();
	}
	//构建界面
	public void inigui() throws ClassNotFoundException, SQLException {
		this.setSize(600,300);
		this.setTitle("JTable显示数据表信息示例");
		this.setLocationRelativeTo(null);//界面居中显示
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLayout(null);//设置无布局管理模式		
		//添加一个表格显示学生信息。用字段名称构造表格标题
		String[] columheader = {"学号","姓名","联系电话","学校","专业"};
		//创建表格模型
		DefaultTableModel stutablemodel = new DefaultTableModel(columheader,0);
		//连接数据库,向表格模型中添加查询的数据
		iniTable(stutablemodel);
		//以模型创建表格
		JTable stutable = new JTable(stutablemodel);		
		//为表格加滚动条
		JScrollPane stujsp = new JScrollPane(stutable);
		stujsp.setSize(500,200);
		stujsp.setLocation(50,30);				
		//将滚动面板添加到框架中
		this.getContentPane().add(stujsp);
		this.setVisible(true);
	}
	public void iniTable(DefaultTableModel tablemodel) throws ClassNotFoundException, SQLException {
		ConnectDB connecdb = new ConnectDB();//创建数据库连接对象
		//构建查询SQL语句
		String sql = "select * from studentinfo";
		ResultSet rs = connecdb.stmt.executeQuery(sql);
		while(rs.next()){//next()返回值为true说明记录集中有符合条件的数据
			String stuid = rs.getString("stuid");
			String stuname = rs.getString("stuname");
			String stutel = rs.getString("stutel");
			String stuschool = rs.getString("stuschool");
			String stupro = rs.getString("stupro");
			String[] rowdata = {stuid,stuname,stutel,stuschool,stupro};
			tablemodel.addRow(rowdata);//将行记录添加到表格模型中
		}
		rs.close();
		connecdb.closecnndb();
	}
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		new JTableShowMysqlDataDemo();
	}
}

        运行以上代码,程序运行结果如图1所示。        

图1 JTable显示Mysql数据库表记录

        以上程序尚有较多可以完善提升的地方,抛砖引玉,读者可以自行优化完善,特别是表格的美化,值得技术探讨与实现,作者也会今后力争写篇关于表格优化的博文回报读者的关注与支持。 

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
为了在Java SwingJTable显示MySQL数据库中的记录,你需要执行以下步骤: 1. 连接MySQL数据库:使用JDBC API连接MySQL数据库。你需要提供MySQL数据库的URL、用户名和密码。 2. 准备SQL查询:使用SQL查询语句从MySQL数据库中检索数据。 3. 执行SQL查询:执行SQL查询并将结果存储在ResultSet对象中。 4. 创建TableModel:TableModel是JTable显示数据的核心。你需要从ResultSet对象中检索列名和数据,并创建一个DefaultTableModel对象。 5. 创建JTable:使用DefaultTableModel对象创建JTable对象。 6. 添加JTable到JFrame:将JTable对象添加到JFrame中。 下面是一个示例代码,它演示了如何在Java SwingJTable显示MySQL数据库中的记录: ```java import java.sql.*; import javax.swing.*; import javax.swing.table.*; public class MySQLJTableExample extends JFrame { private JTable table; public MySQLJTableExample() { setTitle("MySQL JTable Example"); setSize(500, 500); setDefaultCloseOperation(EXIT_ON_CLOSE); // 连接MySQL数据库 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "mypassword"; String query = "SELECT * FROM mytable"; try (Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query)) { // 创建TableModel DefaultTableModel tableModel = new DefaultTableModel(); ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { tableModel.addColumn(metaData.getColumnName(i)); } while (resultSet.next()) { Object[] row = new Object[columnCount]; for (int i = 1; i <= columnCount; i++) { row[i - 1] = resultSet.getObject(i); } tableModel.addRow(row); } // 创建JTable table = new JTable(tableModel); // 添加JTable到JFrame add(new JScrollPane(table)); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { new MySQLJTableExample().setVisible(true); } } ``` 这个示例代码连接到名为"mydatabase"的MySQL数据库,用户名为"root",密码为"mypassword"。它从"mytable"表中检索所有记录,并在JTable显示它们。你可以根据自己的需要修改代码。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值