JDBC学生管理系统

一、准备工作:

1、创建名为lib的Folder文件,将mysql-connector-java-5.1.44-bin.jar包复制到lib文件里,再单击鼠标右键,点击Build Path/Add to Build Path。

2、在MySQL数据库实例test中创建名为student的表。

二、编写代码:

1、com.zzu.tool包中的类:

package com.zzu.tool.db;

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

public class DBLink {
	private Connection getConnection() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url="jdbc:mysql://127.0.0.1:3306/test";
			return DriverManager.getConnection(url,"root","root");
		}catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	public boolean update(String sql) {
		Connection connection = null;
		Statement statement = null;
		try {
			connection = getConnection();
			statement = connection.createStatement();
			int affect = statement.executeUpdate(sql);
			return affect>0;
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			close(statement,connection);
		}
		return false;
	}
	public void select(String sql,IRowMapper rowMapper) { 
		Connection connection = null;                            
		Statement statement = null;
		ResultSet resultSet = null;
		try {
			connection = getConnection();
			statement = connection.createStatement();
			resultSet = statement.executeQuery(sql);
			rowMapper.rowMapper(resultSet);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close(resultSet,statement,connection);
		}
	}
	public boolean exist(String sql) { 
		Connection connection = null;                            
		Statement statement = null;
		ResultSet resultSet = null;
		try {
			connection = getConnection();
			statement = connection.createStatement();
			resultSet = statement.executeQuery(sql);
			return resultSet.next(); 
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close(resultSet,statement,connection);
		}
		return false;
	}
	private void close(Statement statement,Connection connection) {
		try {
			if(statement!=null) {
				statement.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if(connection!=null) {
				connection.close();
			}
		}catch (SQLException e) {
			e.printStackTrace();
		}
	}
	private void close(ResultSet resultSet,Statement statement,Connection connection) {
		try {
			if(resultSet!=null) {
				resultSet.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		close(statement,connection);
	}
}
package com.zzu.tool.db;
import java.sql.ResultSet;
@FunctionalInterface
public interface IRowMapper {
	void rowMapper(ResultSet rs);
}

2、com.zzu.main包里的类:

package com.zzu.main;

import java.sql.SQLException;
import java.util.Scanner;
import com.zzu.tool.db.DBLink;

public class Main {
	private static DBLink db = new DBLink();
	public static void main(String[] args) {
		System.out.println("*********************************");
		System.out.println("*\t\t\t\t*");
		System.out.println("*\t欢迎使用学生信息管理系统\t*");
		System.out.println("*\t\t\t\t*");
		System.out.println("*********************************");
		while (true) {
			menu();
		}
	}

	static void menu() {
		System.out.println("1、添加学生信息");
		System.out.println("2、删除学生信息");
		System.out.println("3、修改学生信息");//地址传递
		System.out.println("4、查询学生信息");//name
		System.out.println("请输入操作,以Enter键结束:");
		Scanner scanner = new Scanner(System.in);
		int option  = scanner.nextInt();
		switch (option) {
			case 1:{
				System.out.println("请输入学生学号,点击Entry键");
				String id = scanner.next();
				String sql = "select id,name,mobile,address from student where id ='"+id+"'";
				if(db.exist(sql)) {
					System.out.println("学号已存在,操作终止!");
					return;
				}
				System.out.println("请输入学生姓名,点击Entry键");
				String name = scanner.next();
				System.out.println("请输入学生手机号码,点击Entry键");
				String mobile = scanner.next();
				System.out.println("请输入学生家庭地址,点击Entry键");
				String address = scanner.next();
				sql = "insert into student(id,name,mobile,address) values('"+id+"','"+name+"','"+mobile+"','"+address+"')";
				if(db.update(sql)) {
					System.out.println("添加成功!");
					return;
				}
				System.out.println("添加失败!");
				break;
			}
			case 2:{
				System.out.println("请输入要删除学生的学号,点击Enter键");
				String id = scanner.next();
				String sql = "select name from student where id = '"+id+"'";
				if(!db.exist(sql)) {
					System.out.println("学号不存在,操作终止!");
					return;
				}
				sql = "delete from student where id = '"+id+"'";
				if(db.update(sql)) {
					System.out.println("删除成功!");
					return;
				}
				System.out.println("删除失败!");
				break;
			}
			case 3:{
				System.out.println("请输入要修改学生的学号,点击Enter键");
				String id = scanner.next();
				String sql = "select name from student where id = '"+id+"'";
				if(!db.exist(sql)) {
					System.out.println("学号不存在,操作终止!");
					return;
				}
				System.out.println("请输入新的姓名,点击Enter键");
				String name = scanner.next();
				System.out.println("请输入新的手机号码,点击Enter键");
				String mobile = scanner.next();
				System.out.println("请输入新的家庭地址,点击Enter键");
				String address = scanner.next();
				sql = "update student set name='"+name+"', mobile='"+mobile+"', address='"+address+"' where id='"+id+"'";
				if(db.update(sql)) {
					System.out.println("修改成功!");
					return;
				}
				System.out.println("修改失败!");
				break;
			}
			case 4:{
				System.out.println("请输入要查询学生的学号,点击Enter键");
				String id = scanner.next();
				String sql = "select name from student where id = '"+id+"'";
				if(!db.exist(sql)) {
					System.out.println("学号不存在,操作终止!");
					return;
				}
				sql = "select id,name,mobile,address from student where id='"+id+"'";
				//1、有名内部类
				/*class RowMapper implements IRowMapper{
					@Override
					public void rowMapper(ResultSet rs) {
						try {
							if(rs.next()) {
								String id = rs.getString("id");
								String name = rs.getString("name");
								String mobile = rs.getString("mobile");
								String address = rs.getString("address");
								System.out.println(id+","+name+","+mobile+","+address);
							}
						} catch (SQLException e) {
							e.printStackTrace();
						}
					}			
				}
				RowMapper rowMapper = new RowMapper();
				db.select(sql, rowMapper);
				//db.select(sql,new RowMapper());//以上两行可以改写为这一行  */
				//2、匿名内部类
				/*IRowMapper rowMapper = new IRowMapper(){
					@Override
					public void rowMapper(ResultSet rs) {
						try {
							if(rs.next()) {
								String id = rs.getString("id");
								String name = rs.getString("name");
								String mobile = rs.getString("mobile");
								String address = rs.getString("address");
								System.out.println(id+","+name+","+mobile+","+address);
							}
						} catch (SQLException e) {
							e.printStackTrace();
						}
					}			
				};
				db.select(sql, rowMapper);*/		
				/*db.select(sql, new IRowMapper() {
					@Override
					public void rowMapper(ResultSet rs) {
						try {
							if(rs.next()) {
								String id = rs.getString("id");
								String name = rs.getString("name");
								String mobile = rs.getString("mobile");
								String address = rs.getString("address");
								System.out.println(id+","+name+","+mobile+","+address);
							}
						} catch (SQLException e) {
							e.printStackTrace();
						}
					}	
				});*/
				//3、lambda表达式
				db.select(sql, (rs) -> {
					try {
						if(rs.next()) {
							//id = rs.getString("id"); 
							String name = rs.getString("name");
							String mobile = rs.getString("mobile");
							String address = rs.getString("address");
							System.out.println(id+","+name+","+mobile+","+address);
						}
					} catch (SQLException e) {
						e.printStackTrace();
					}		
				});
				break;
			}
			default:
				System.out.println("I'm Sorry,there is not the "+option+" option,please try again.");
		}
	}
}

 

你可能感兴趣的:(JDBC学生管理系统)