利用JDBC实现班级学生管理,在数据库中创建student和class表,编写应用程序,具有如下功能:

1. 数据插入功能。能增加班级;给某班增加学生

2. 数据查询功能。列出所有班级;选择某个班级能查看班级下所有的学生

3. 数据删除功能。能删除某个学生;能删除班级,删除班级的同时需要删除班级下的所有学生。

4. 数据修改功能。能修改学生姓名;能修改班级名称


看到这个题目以后,不要认为有多难,根据题目所要求的一步一步的来,

第一步,先在数据库中创建两张表,并添加数据

SQL:
create table student(
       sno number(10) primary key,
       sname varchar(20) not null,
       sex char(8),
       brithday date,
       phone number(20),
       clazz_id varchar(20) references clazz(cno)
)
insert into student values(1001,'张三','男',to_date('1996-06-06','yyyy-mm-dd'),1234567989,'jsj01');
insert into student values(1002,'王二','女',to_date('1997-12-03','yyyy-mm-dd'),9874563211,'wl02');
insert into student values(1003,'刘六','男',to_date('1997-06-18','yyyy-mm-dd'),4563217899,'dx03');
select * from student

create table clazz(
       cno varchar(20) primary key,
       cname varchar(20) unique,
       teacher varchar(20) not null
)
insert into clazz values('jsj01','计算机专业','欧老师');
insert into clazz values('wl02','网络工程专业','刘老师');
insert into clazz values('dx03','电信专业','罗老师');
select * from clazz

第二 步给两张表分别创建类:

Student:

package com.student.po;

import java.util.Date;

/**
 *   sno number(10) primary key,
       sname varchar(20) not null,
       sex char(8),
       brithday date,
       phone number(20),
       majorno varchar(20) references major(mno)
 * @author Administrator
 *
 */
public class Student {
	private int id;
	private String name;
	private String sex;
	private Date brithday;
	private long phone;
	private String clzzId;
	
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", brithday=" + brithday + ", phone=" + phone
				+ ", clzzId=" + clzzId + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Date getBrithday() {
		return brithday;
	}
	public void setBrithday(Date brithday) {
		this.brithday = brithday;
	}
	public long getPhone() {
		return phone;
	}
	public void setPhone(long phone) {
		this.phone = phone;
	}
	public String getClzzId() {
		return clzzId;
	}
	public void setClzzId(String clzzId) {
		this.clzzId = clzzId;
	}
}

Clazz:

package com.student.po;
/**
 *   cno varchar(20) primary key,
       cname varchar(20) unique,
       teacher varchar(20) not null
 * @author Administrator
 *
 */
public class Clazz {
	private String cno;
	private String cname;
	private String teacher;
	@Override
	public String toString() {
		return "Clazz [cno=" + cno + ", cname=" + cname + ", teacher=" + teacher + "]";
	}
	public String getCno() {
		return cno;
	}
	public void setCno(String cno) {
		this.cno = cno;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public String getTeacher() {
		return teacher;
	}
	public void setTeacher(String teacher) {
		this.teacher = teacher;
	}
}

第三步:写出数据库的增删改查

StudentDAO:
package com.student.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.book.util.DBUtil;
import com.student.po.Student;

public class StudentDAO {
	Connection conn;
	
	public StudentDAO() {
		conn = DBUtil.getConnection();
	}
	
	public StudentDAO(Connection conn) {
		this.conn = conn;
	}
	
	/**
	 * 通过班级ID查询学生信息
	 * @param bid
	 * @return
	 */
	public Student getStudent(String clazzId) {
		String sql = "select * from student where clazz_id=?";
		PreparedStatement ps;
		Student student = null;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, clazzId);
			ResultSet rs = ps.executeQuery();
			if(rs.next()) {
				student = new Student();
				student.setId(rs.getInt("sno"));
				student.setName(rs.getString("sname"));
				student.setSex(rs.getString("sex"));
				student.setBrithday(rs.getDate("brithday"));
				student.setPhone(rs.getInt("phone"));
				student.setClzzId(rs.getString("clazz_id"));
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return student;
	}
	
	/**
	 * 查询出所有的学生
	 * @return
	 */
	public List<Student> getAllStudent() {
		String sql = "select * from student";
		PreparedStatement ps;
		List<Student> list = new ArrayList<Student>();
		Student student = null;
		try {
			ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				student = new Student();
				student.setId(rs.getInt("sno"));
				student.setName(rs.getString("sname"));
				student.setSex(rs.getString("sex"));
				student.setBrithday(rs.getDate("brithday"));
				student.setPhone(rs.getLong("phone"));
				student.setClzzId(rs.getString("clazz_id"));
				list.add(student);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}
	
	
	
	//新增
	public boolean createStudent(Student student) {
		String sql = "insert into student values (?,?,?,?,?,?)";
		PreparedStatement ps = null;
		try {
			conn.setAutoCommit(false);
		    ps = conn.prepareStatement(sql);
			ps.setInt(1, student.getId());
			ps.setString(2, student.getName());
			ps.setString(3, student.getSex());
			ps.setDate(4, (Date) student.getBrithday());
			ps.setLong(5, student.getPhone());
			ps.setString(6, student.getClzzId());
			ps.executeUpdate();
			conn.commit();
			conn.setAutoCommit(true);
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				System.out.println("出现错误,数据回滚");
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			DBUtil.close(ps);
		}
		return false;
	}
	//更新
	public boolean updateStudent(Student student) {
		String sql = "update student set sname =? where sno=? ";
		PreparedStatement ps=null;
		try {
			conn.setAutoCommit(false);
			ps = conn.prepareStatement(sql);
			ps.setString(1, student.getName());
			ps.setInt(2, student.getId());
			ps.executeUpdate();
			conn.commit();
			conn.setAutoCommit(true);
			return true;	
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				System.out.println("出现错误,数据回滚");
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			DBUtil.close(ps);
		}
		return false;	
	}
	//删除
	public boolean deleteStudent(int studentId) {
		String sql = "delete student where sno=? ";
		PreparedStatement ps = null;
		try {
			conn.setAutoCommit(false);
			ps = conn.prepareStatement(sql);
			ps.setInt(1, studentId);
			ps.executeUpdate();
			conn.commit();
			conn.setAutoCommit(true);
			return true;	
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				System.out.println("出现错误,数据回滚");
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			DBUtil.close(ps);
		}
		return false;	
	}	
	//删除 由班级ID删掉
		public boolean deleteStudent(String clazzId) {
			String sql = "delete student where clazz_id=? ";
			PreparedStatement ps = null;
			try {
				conn.setAutoCommit(false);
				ps = conn.prepareStatement(sql);
				ps.setString(1, clazzId);
				ps.executeUpdate();
				conn.commit();
				conn.setAutoCommit(true);
				return true;	
			} catch (SQLException e) {
				e.printStackTrace();
				try {
					System.out.println("出现错误,数据回滚");
					conn.rollback();
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
			} finally {
				DBUtil.close(ps);
			}
			return false;	
			
		
		}	
}

ClazzDAO:

package com.student.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.book.util.DBUtil;
import com.student.po.Clazz;

public class ClazzDAO {
	Connection conn;
	
	public ClazzDAO() {
		conn = DBUtil.getConnection();
	}
	
	public ClazzDAO(Connection conn) {
		this.conn = conn;
	}
	
	/**
	 * 通过ID查询班级信息
	 * @param bid
	 * @return
	 */
	public Clazz getClazz(String clazzId) {
		String sql = "select * from clazz where cno=?";
		PreparedStatement ps;
		Clazz clazz = null;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, clazzId);
			ResultSet rs = ps.executeQuery();
			if(rs.next()) {
				clazz = new Clazz();
				clazz.setCno(rs.getString("cno"));
				clazz.setCname(rs.getString("cname"));
				clazz.setTeacher(rs.getString("teacher"));
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return clazz;
	}
	
	/**
	 * 查询出所有的班级
	 * @return
	 */
	public List<Clazz> getAllClazz() {
		String sql = "select * from clazz";
		PreparedStatement ps;
		List<Clazz> list = new ArrayList<Clazz>();
		Clazz clazz = null;
		try {
			ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				clazz = new Clazz();
				clazz.setCno(rs.getString("cno"));
				clazz.setCname(rs.getString("cname"));
				clazz.setTeacher(rs.getString("teacher"));
				list.add(clazz);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}
	
	//新增
	public boolean createClazz(Clazz clazz) {
		String sql = "insert into clazz values (?,?,?)";
		PreparedStatement ps = null;
		try {
			conn.setAutoCommit(false);
			ps = conn.prepareStatement(sql);
			ps.setString(1, clazz.getCno());
			ps.setString(2, clazz.getCname());
			ps.setString(3, clazz.getTeacher());
			ps.executeUpdate();
			conn.commit();
			conn.setAutoCommit(true);
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				System.out.println("出现错误,数据回滚");
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			DBUtil.close(ps);
		}
		return false;
	}
	//更新
	public boolean updateClazz(Clazz clazz) {
		PreparedStatement ps = null;
		String sql = "update clazz set cname =? where cno=? ";
		try {
			conn.setAutoCommit(false);
			ps = conn.prepareStatement(sql);
			ps.setString(1, clazz.getCname());
			ps.setString(2, clazz.getCno());
			ps.executeUpdate();
			conn.commit();
			conn.setAutoCommit(true);
			return true;	
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				System.out.println("出现错误,数据回滚");
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			DBUtil.close(ps);
		}
		return false;	
	}
	
	//删除
	public boolean deleteClazz(String clazzId) {
		String sql = "delete clazz where cno=? ";
		PreparedStatement ps = null;
		try {
			conn.setAutoCommit(false);
			ps  = conn.prepareStatement(sql);
			ps.setString(1, clazzId);
			ps.executeUpdate();
			conn.commit();
			conn.setAutoCommit(true);
			return true;	
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				System.out.println("出现错误,数据回滚");
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			DBUtil.close(ps);
		}
		return false;	
	}	

}
最后,写出测试类!
1.数据插入功能。能增加班级;给某班增加学生
package com.student;

import com.student.dao.ClazzDAO;
import com.student.dao.StudentDAO;
import com.student.po.Clazz;
import com.student.po.Student;

public class Test01 {

	public static void main(String[] args) {
//		1. 数据插入功能。能增加班级;给某班增加学生
		System.out.println("********增加学生信息**********");
		StudentDAO studentdao = new StudentDAO();
		Student student = new Student();
		student.setId(1004);
		student.setName("大黄");
		student.setSex("男");
		java.util.Date utilDate = new java.util.Date(); //获取当前时间
		java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
		student.setBrithday(sqlDate);
		student.setPhone(123456789);
		student.setClzzId("jsj01");
		System.out.println(studentdao.createStudent(student));
		
		System.out.println("********增加班级信息**********");
		ClazzDAO clazzdao = new ClazzDAO();
		Clazz clazz = new Clazz();
		clazz.setCno("tx04");
		clazz.setCname("通信专业");
		clazz.setTeacher("陈老师");
		System.out.println(clazzdao.createClazz(clazz));
		
	}
}

2.数据查询功能。列出所有班级;选择某个班级能查看班级下所有的学生
package com.student;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.student.dao.ClazzDAO;
import com.student.dao.StudentDAO;
import com.student.po.Clazz;
import com.student.po.Student;

/**
 * 2. 数据查询功能。列出所有班级;
 * 选择某个班级能查看班级下所有的学生
 * @author Administrator
 *
 */
public class Test02 {

	public static void main(String[] args) {
		System.out.println("***********列出班级信息***********");
		ClazzDAO clazzdao = new ClazzDAO();
		List<Clazz> list = clazzdao.getAllClazz();
		for (Clazz clazz : list) {
			System.out.println(clazz);
		}
		
		System.out.println("********查看某个班级学生***********");
		Clazz clazz = clazzdao.getClazz("jsj01");
		
		StudentDAO studentdao = new StudentDAO();
		List<Student> list2 = studentdao.getAllStudent();
		for (Student stu : list2) {
			if(stu.getClzzId().equals(clazz.getCno())) {
				Student student = studentdao.getStudent(clazz.getCno());
				System.out.println(student);
			}
		}
	}
}

3.数据删除功能。能删除某个学生;能删除班级,删除班级的同时需要删除班级下的所有
学生。
package com.student;

import java.util.List;

import com.student.dao.ClazzDAO;
import com.student.dao.StudentDAO;
import com.student.po.Clazz;
import com.student.po.Student;

/**
 * 数据删除功能。能删除某个学生;
 * 能删除班级,删除班级的同时需要删除班级下的所有学生。
 * @author Administrator
 *
 */
public class Test03 {

	public static void main(String[] args) {
		System.out.println("**********删除学生信息**********");	
		StudentDAO studentdao = new StudentDAO();
		System.out.println(studentdao.deleteStudent(1004));
		
		System.out.println("**********删除班级信息***********");
		ClazzDAO clazzdao = new ClazzDAO();
		Clazz clazz = clazzdao.getClazz("jsj01");
		List<Student> list2 = studentdao.getAllStudent();
		for (Student stu : list2) {
			if(stu.getClzzId().equals(clazz.getCno())) {
				boolean student = studentdao.deleteStudent(clazz.getCno());
				if(student==true) {
					System.out.println(clazzdao.deleteClazz(clazz.getCno()));
				}
			}else{   
                                System.out.println(clazzdao.deleteClazz(clazz.getCno()));               
                          }
}}}4. 数据修改功能。能修改学生姓名;能修改班级名称package com.student;import com.student.dao.ClazzDAO;import com.student.dao.StudentDAO;import com.student.po.Clazz;import com.student.po.Student;/** * 4. 数据修改功能。能修改学生姓名;能修改班级名称 * @author Administrator * */public class Test04 {public static void main(String[] args) {System.out.println("*************修改学生姓名***************");StudentDAO studentdao = new StudentDAO();Student student = new Student();student.setId(1005);student.setName("周测JDBC");System.out.println(studentdao.updateStudent(student));System.out.println("*****************修改班级名称*************");ClazzDAO clazzdao = new ClazzDAO();Clazz clazz = new Clazz();clazz.setCno("wl02");clazz.setCname("网络专业");System.out.println(clazzdao.updateClazz(clazz));}}

为了省略步骤,我将连接数据库的步骤给封装成了一个DBUtil类

package com.entor.util;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {

	public static Connection getConnection() {
		Connection conn = null;
		try {
			
			Properties prop = new Properties();
			prop.load(new FileInputStream("config/db.properties"));
			
			Class.forName(prop.getProperty("driver"));
			conn = DriverManager.getConnection(prop.getProperty("url"), 
												prop.getProperty("username"), 
												prop.getProperty("password"));
		}catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * @param rs
	 */
	public static void close(ResultSet rs) {
		try {
			Statement stmt = rs.getStatement();
			Connection conn = stmt.getConnection();
			
			rs.close();
			stmt.close();
			conn.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 通过Statement关闭数据库连�??
	 * @param stmt
	 */
	public static void close(Statement stmt) {
		try {
			Connection conn = stmt.getConnection();
			
			stmt.close();
			conn.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}

以及连接数据库的地址,driver................

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
username=scott
password=tiger

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,以下是创建学生数据库Studentstudb以及增删改查操作的Java程序实现: ```java import java.sql.*; import java.util.Scanner; public class StudentDatabase { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 1.连接到数据库 Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/Student?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; String user = "root"; String password = "root"; conn = DriverManager.getConnection(url, user, password); // 2.创建 stmt = conn.createStatement(); String sql = "CREATE TABLE IF NOT EXISTS studb (" + "id INT(11) NOT NULL AUTO_INCREMENT," + "name VARCHAR(20) NOT NULL," + "gender CHAR(1) NOT NULL," + "phone VARCHAR(20) NOT NULL," + "birthday DATE NOT NULL," + "class_name VARCHAR(20) NOT NULL," + "PRIMARY KEY (id)" + ")"; stmt.executeUpdate(sql); // 3.增删改查操作 Scanner input = new Scanner(System.in); while (true) { System.out.println("请选择操作:\n1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n4.查询学生信息\n5.退出"); int choice = input.nextInt(); switch (choice) { case 1: System.out.println("请输入学生姓名:"); String name = input.next(); System.out.println("请输入学生性别(男/女):"); String gender = input.next(); System.out.println("请输入学生电话号码:"); String phone = input.next(); System.out.println("请输入学生生日(格式为yyyy-MM-dd):"); String birthday = input.next(); System.out.println("请输入学生班级名字:"); String className = input.next(); sql = String.format("INSERT INTO studb (name, gender, phone, birthday, class_name) VALUES ('%s', '%s', '%s', '%s', '%s')", name, gender, phone, birthday, className); stmt.executeUpdate(sql); System.out.println("添加成功!"); break; case 2: System.out.println("请输入要删除的学生学号:"); int id = input.nextInt(); sql = String.format("DELETE FROM studb WHERE id = %d", id); stmt.executeUpdate(sql); System.out.println("删除成功!"); break; case 3: System.out.println("请输入要修改的学生学号:"); id = input.nextInt(); System.out.println("请输入学生姓名:"); name = input.next(); System.out.println("请输入学生性别(男/女):"); gender = input.next(); System.out.println("请输入学生电话号码:"); phone = input.next(); System.out.println("请输入学生生日(格式为yyyy-MM-dd):"); birthday = input.next(); System.out.println("请输入学生班级名字:"); className = input.next(); sql = String.format("UPDATE studb SET name = '%s', gender = '%s', phone = '%s', birthday = '%s', class_name = '%s' WHERE id = %d", name, gender, phone, birthday, className, id); stmt.executeUpdate(sql); System.out.println("修改成功!"); break; case 4: System.out.println("请输入要查询的学生学号:"); id = input.nextInt(); sql = String.format("SELECT * FROM studb WHERE id = %d", id); ResultSet rs = stmt.executeQuery(sql); if (rs.next()) { System.out.printf("%d\t%s\t%s\t%s\t%s\t%s\n", rs.getInt("id"), rs.getString("name"), rs.getString("gender"), rs.getString("phone"), rs.getString("birthday"), rs.getString("class_name")); } else { System.out.println("无此学生信息!"); } break; case 5: System.out.println("已退出!"); System.exit(0); default: System.out.println("输入有误,请重新输入!"); } } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 运行该程序后,可以按照提示进行增删改查操作,具体操作如下: - 添加学生信息:输入学生姓名、性别、电话号码、生日、班级名字,程序将自动将其插入到studb。 - 删除学生信息:输入要删除的学生学号,程序将自动删除该学生在studb的信息。 - 修改学生信息:输入要修改的学生学号,以及要修改的学生姓名、性别、电话号码、生日、班级名字,程序将自动将其更新到studb。 - 查询学生信息:输入要查询的学生学号,程序将自动从studb查找对应的学生信息并打印出来。 - 退出:输入5后,程序将自动退出。 注意:该程序需要连接到MySQL数据库,因此需要安装MySQL并创建一个名为Student数据库程序的url、user、password等参数需要根据实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值