Java连接MySQL实现增删改查--学生管理系统(附带注释源码!!!)

项目源代码分享

使用的软件安装及配置

Java的安装 java.jdk 3.8 安装Eclipse

MySQL的安装 Navicat (测试使用的是 11. 1.13)

先了解整体流程再学具体代码,附件中代码都有注释

数据库的连接
数据准备

提前导入jar包 在工程下先新建一个 lib文件夹 把jar包复制进去然后右键构建路径 ,点击添加至构建路径,如图所示。
在这里插入图片描述
文件结构如图
在这里插入图片描述

Java 连接 MySQL 需要驱动包,官网下载地址为MySQL驱动包官网下载

已上传的项目中也有 jar 包如果发现版本不对等情况也可以自己下载
先在数据库中创建一些数据

使用表表的用途
student表用于数据的增删改查
user表用于登录数据库 (相当于QQ登录的账号和密码)

建立如图所示的数据库

在这里插入图片描述
user表中设置表结构和数据(登录教务系统账号和密码如下图
在这里插入图片描述

在这里插入图片描述
student表数据的存储结构
在这里插入图片描述
手动输入如下数据
在这里插入图片描述

先执行 Connect 类连接数据库
package weixin_52593633;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Connect {
	Connection con=null;
	Statement st;
	ResultSet res=null;
	String sql;
	//stu s=new stu();   
	public void Open() throws Exception{
		//连接数据库
		try {
			Class.forName("com.mysql.jdbc.Driver");  
			String url="jdbc:mysql://localhost:3306/weixin_52593633?characterEncoding=utf8&useSSL=false";
			
			String username="XXXX";    //自己创建数据库的名称 默认 root
			String password="XXXXX";   //MySQL使用的密码
			
			con=DriverManager.getConnection(url,username,password);	
		}catch(Exception e) {
			System.out.println("数据库连接"+e.getMessage());
			e.printStackTrace();
		}
	}
	
	public void closestate() { //关闭statement对象
		try {
			st.close();
		}catch (SQLException e) {
			// TODO: handle exception
			System.err.format("error: %s\n", sql);
			e.printStackTrace();
		}
	}
	public void closecon() {  //关闭数据库连接
		try {
			con.close();
		}catch (Exception e) {
			// TODO: handle exception
			System.out.println("关闭数据库失败"+e.getMessage());
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) throws Exception {
		// TODO 自动生成的方法存根
		Connect con=new Connect();
		con.Open();
		
		//con.closestate();
		con.closecon();
		
	}

}

实现登录窗口
package weixin_52593633;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Login extends JFrame implements ActionListener {
	//准备好相关的组件
	JLabel l1=new JLabel("账号:");
	JLabel l2=new JLabel("密码:");
	JButton b1=new JButton("登录");
	JButton b2=new JButton("取消");
	JTextField f1=new JTextField(20);
	JPasswordField f2=new JPasswordField(20);
	
	Login(){
		setTitle("登录界面");
		setSize(500, 200);
		setVisible(true);
		setLocation(500,300);
		
		setLayout(new GridLayout(3, 1));
		JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); 
		p1.add(l1);p1.add(f1);  
		p2.add(l2);p2.add(f2);
		p3.add(b1); p3.add(b2);
		add(p1); add(p2); add(p3);
	
		b1.addActionListener(this);
		b2.addActionListener(this);
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO 自动生成的方法存根
		Object obj=arg0.getSource();
		if(obj==b1) {
			String id=f1.getText();
			String password=f2.getText();
			//System.out.println(id+"  "+password);
			int res=-1;
			try {
				res=new Connect().value(id, password);
			}catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			if(res==1) {
			//	打开一个新的界面 教务管理系统 Date() 
				new Data(); //同样是一个类用来显示系统页面叫 Data
				dispose();  //意思是在关闭JFrame时,自动调用dispose方法释放资源
			}
			else if(res==0) {
				f1.setText("");
				//f2.setText("");
				JOptionPane.showMessageDialog(null, "您输入的账号为空或有误","错误",0);
																			//(Fram,输出字符串,弹窗名称,图片(0,1,2,3))
			}
			else
			{
				//f1.setText("");
				f2.setText("");
				JOptionPane.showMessageDialog(null, "您输入的密码为空或有误","错误",2);
																			//(Fram,输出字符串,弹窗名称,图片(0,1,2,3))
			}
		}
		else 
			dispose();
	}
	
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Login login=new Login();
		login.setVisible(true);
	}
}

在这里插入图片描述
①账号错误时
在这里插入图片描述
②密码错误时
在这里插入图片描述
③成功登录时显示学生管理界面
在这里插入图片描述

对数据实现增删改查

点击查看具体增删改查代码讲解

查数据

(这里默认对学号唯一查找) 在学号框中输入学号 1 ,点击查询 按钮
在这里插入图片描述

添加数据

在相应的框中写入数据 点击添加按钮 在点击系统管理 刷新页面
这里插入两条数据
在这里插入图片描述

修改数据

按学号查找对第一条数据 成绩修改为 66 点击修改后点击系统管理的刷新
在这里插入图片描述

删除数据

输入学号之后点击删除按钮后刷新即可
在这里插入图片描述

对于每行数据可以点击使用排序

按成绩升序降序排名
在这里插入图片描述

  • 15
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是一个简单的Java学生管理系统示例,涉及到了连接MySQL数据库增删改查操作。注意,以下示例代码仅供参考,需要根据具体情况进行修改和完善。 首先,需要创建一个学生类,表示一个学生的基本信息,例如学号、姓名、年龄、性别等。 ``` public class Student { private int id; private String name; private int age; private String gender; // 构造方法和getter/setter方法省略 } ``` 然后,需要创建一个数据库连接工具类,用于连接MySQL数据库,并提供一些常用的增删改查操作方法。以下示例代码使用了JDBC连接MySQL数据库。 ``` import java.sql.*; public class DBUtil { // MySQL数据库连接信息 private static final String URL = "jdbc:mysql://localhost:3306/students"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; // 加载MySQL JDBC驱动 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 获取数据库连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWORD); } // 关闭数据库连接 public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } // 增加学生信息 public static void addStudent(Student student) { Connection conn = null; PreparedStatement stmt = null; try { conn = getConnection(); String sql = "INSERT INTO students (name, age, gender) VALUES (?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, student.getName()); stmt.setInt(2, student.getAge()); stmt.setString(3, student.getGender()); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { close(conn, stmt, null); } } // 删除学生信息 public static void deleteStudent(int id) { Connection conn = null; PreparedStatement stmt = null; try { conn = getConnection(); String sql = "DELETE FROM students WHERE id=?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { close(conn, stmt, null); } } // 更新学生信息 public static void updateStudent(Student student) { Connection conn = null; PreparedStatement stmt = null; try { conn = getConnection(); String sql = "UPDATE students SET name=?, age=?, gender=? WHERE id=?"; stmt = conn.prepareStatement(sql); stmt.setString(1, student.getName()); stmt.setInt(2, student.getAge()); stmt.setString(3, student.getGender()); stmt.setInt(4, student.getId()); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { close(conn, stmt, null); } } // 查询学生信息 public static Student getStudent(int id) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; Student student = null; try { conn = getConnection(); String sql = "SELECT * FROM students WHERE id=?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); rs = stmt.executeQuery(); if (rs.next()) { student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); student.setGender(rs.getString("gender")); } } catch (SQLException e) { e.printStackTrace(); } finally { close(conn, stmt, rs); } return student; } } ``` 以上代码中,需要替换MySQL数据库连接信息(URL、用户名和密码),以及对应的学生表格名和字段名。代码中提供了四个常用的增删改查操作方法,分别是: - 增加学生信息:使用PreparedStatement对象执行INSERT语句。 - 删除学生信息:使用PreparedStatement对象执行DELETE语句。 - 更新学生信息:使用PreparedStatement对象执行UPDATE语句。 - 查询学生信息:使用PreparedStatement对象执行SELECT语句,并将查询结果封装成一个学生对象返回。 最后,可以编写一个简单的测试程序,演示以上增删改查操作的使用。 ``` public class Test { public static void main(String[] args) { // 增加学生信息 Student student = new Student(); student.setName("张三"); student.setAge(20); student.setGender("男"); DBUtil.addStudent(student); // 查询学生信息 Student student1 = DBUtil.getStudent(1); System.out.println(student1.getName()); // 更新学生信息 student1.setName("李四"); DBUtil.updateStudent(student1); // 删除学生信息 DBUtil.deleteStudent(1); } } ``` 以上测试程序中,首先增加了一个学生信息,然后查询出该学生信息并输出,接着修改该学生姓名并更新,最后删除该学生信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值