如何用JDBC创建学生管理系统

目录

步骤一:创建工具包

(1)加载驱动

(2)创建连接

(3)创建语句

(4)创建接口

步骤二:创建学生管理系统包

(1)系统入口

(2)switch语句下的添加学生信息系统

         (3)switch语句下的删除学生信息系统

         (4)switch语句下的修改学生信息系统

         (5)switch语句下的查询学生信息系统

完整代码请见个人博客https://blog.csdn.net/m0_46383618/article/details/106224947


步骤一:创建工具包

(1)加载驱动

复制架包(MySQL数据库驱动程序中的-mysql-connector-java-5.1.44-bin.jar);

粘贴到创建的lib里面,然后右键build path--add(注意将Package Explorer小箭头里的Package Presentation 变为Hierarchial);

在新出现的Libraries里找到jdbc包里面的drive.class,并复制Qulified name得到com.mysql.jdbc.Driver;

(2)创建连接

String url="jdbc:mysql://127.0.0.1:3306/test";//指定连接那一台计算机上的那个数据库实例,127.0.0.1为本机
return DriverManager.getConnection(url, "root", "root");//获取数据库连接的对象,一个对象表示一次数据库的连接

(3)创建语句

创建数据连接语句

private static 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;
}

创建sql语句

public boolean date(String sql) {//sql语句,根据sql的不同执行增删改查
    Connection connection = null;//提升一级
    Statement statement = null;
    try {
	connection =  getConnection(); //获取连接
	statement = connection.createStatement();//获得Statement对象
	int result = statement.executeUpdate(sql);//执行sql语句,返回受影响的行数,仅限于insert,update,delete
	/*statement.close();//如果上面代码出现异常,则该行代码及其下面代码无法执行,所以资源无法释放;比如sql语句语法错误,则statement和connection无法释放
	connection.close();*/
	return result>0;//处理结果
			
	} catch (Exception e) {
		e.printStackTrace();
	}finally {//即便有异常也会执行
		close(statement,connection);
			
	}
	return false;
}

创建释放资源语句

private static void close(Statement statement, Connection connection) {//简化代码,将数据的释放写到一个方法里,直接调用即可
    try {
	if(statement!=null) {//有可能异常导致statement没有赋值,比如url出错
	    statement.close();
	}
    }catch(SQLException e) {
	e.printStackTrace();
    }
    try {
    if(connection!=null) {
        connection.close();
    }
    }catch(SQLException e) {
	e.printStackTrace();
			
    }
}
		
private static void close(ResultSet resultSet,Statement statement, Connection connection) {//重载
    try {
	if(resultSet!=null) {//有可能异常导致statement没有赋值,比如url出错
	    resultSet.close();
    }
    }catch(SQLException e) {
	e.printStackTrace();
    }
    close(statement,connection);
    }
}

创建接口实现类语句

public static void select2(String sql,IRowMapper rowMapper) {//接口无法创建对象,所以rowMapper参数一定指向IRowMapper接口实现类 多态
	Connection connection = null;//提升一级
	Statement statement = null;
	ResultSet resultSet = null;
	try{
	        connection =  getConnection(); //获取连接
		statement = connection.createStatement();//获得Statement对象
		resultSet = statement.executeQuery(sql);//执行sql语句,将值赋给resultSet
		//此时数据都在resultSet里,需要通过循环将他显示
		rowMapper.rowMapper(resultSet);//因为rowMapper参数指向IRrowMapper接口实现类对象,所以此处将调用接口实现类中所实现的rowMapper方法  多态
		//如果没有此多态,则main方法里调用时result的值会被finally释放,所以要
	} catch (Exception e) {
			e.printStackTrace();
	}finally {//即便有异常也会执行,释放资源
		close(resultSet,statement,connection);
	}
}

创建查询语句

public static boolean exisit(String sql) {//查询
	Connection connection = null;//提升一级
	Statement statement = null;
	ResultSet resultSet = null;
	try{
		connection =  getConnection(); 
		statement = connection.createStatement();//获得Statement对象
		resultSet = statement.executeQuery(sql);//执行sql语句,将值赋给resultSet
		//此时数据都在resultSet里,需要通过循环将他显示
		return resultSet.next();
	} catch (Exception e) {
		e.printStackTrace();
	}finally {//即便有异常也会执行
		close(resultSet,statement,connection);
	}
	return false;
}

(4)创建接口

package com.zzu.tool.db;
import java.sql.ResultSet;

@FunctionalInterface
public interface IRowMapper {
        
        void rowMapper(ResultSet rs);//定义rs变量
}

步骤二:创建学生管理系统包

(1)系统入口

package com.zzu.main;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

import com.zzu.tool.db.DBlink;
import com.zzu.tool.db.IRowMapper;

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、查询学生信息");
		System.out.println("请输入操作,以Enter键结束:");
		Scanner scanner = new Scanner(System.in);//输入
		int option  = scanner.nextInt();

(2)switch语句下的添加学生信息系统

switch (option) {
	case 1:{
		System.out.println("请输入学号");
		String id = scanner.next();
		String sql = "select name from student where id = '"+id+"'";
		if(db.exisit(sql)) {
			System.out.println("学号已存在,操作终止!");
			return;
		}
		System.out.println("请输入姓名");
		String name = scanner.next();
		System.out.println("请输入手机号");
		String mobile = scanner.next();
		System.out.println("请输入地址");
		String address = scanner.next();
		sql="insert into student (id,name,mobile,address) values
('"+id+"','"+name+"','"+mobile+"','"+address+"')";//添加sql语句
		if(db.date(sql)) {//此时执行添加sql语句
			System.out.println("添加成功!");
		}
		System.out.println("添加失败!");
		break;
	}

(3)switch语句下的删除学生信息系统

case 2:{
	System.out.println("请输入学号");
	String id = scanner.next();
	String sql = "select name from student where id = '"+id+"'";//注意id的写法
	if(!db.exisit(sql)) {
		System.out.println("学号不存在,操作终止!");
		return;
	}
	sql="delete from student wherer id='"+id+"'";
	if(db.date(sql)){
		System.out.println("删除成功!");
                return;
	}
	System.out.println("删除失败!");
	break;
}

(4)switch语句下的修改学生信息系统

case 3:{
	System.out.println("请输入学号");
	String id = scanner.next();
	String sql = "select name from student where id = '"+id+"'";//查询语句
	if(!db.exisit(sql)) {
		System.out.println("学号不存在,操作终止!");
		return;
	}
	System.out.println("请输入新姓名");
	String name = scanner.next();
	System.out.println("请输入新手机号");
	String mobile = scanner.next();
	System.out.println("请输入新地址");
	String address = scanner.next();
	sql="update student set name='"+name+"','"+mobile+"','"+address+"' where id = '"+id+"'";//添加语句
	if(db.date(sql)){
		System.out.println("修改成功!");
                return;
	}
	System.out.println("修改失败!");
	break;
}

(5)switch语句下的查询学生信息系统

case 4:{//查询
	System.out.println("请输入学号");
	String id = scanner.next();
	String sql = "select name from student where id = '"+id+"'";
	if(!db.exisit(sql)) {
		System.out.println("学号不存在,操作终止!");
		return;
	}
	sql="select id,name,mobile,address from student  where id = '"+id+"'";
	/*class RowMapper implements IRowMapper{//用内部类

	@Override//重写接口类中的代码
	public void rowMapper(ResultSet rs) {
		try {
			if(rs.next()) {//此时的rs为数据库里的表
				String id = rs.getString("id");
				String name = rs.getString("name");
				String mobile = rs.getString("mobile");
				String address = rs.getString("address");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}	
	}
}
        db.select2(sql, new RowMapper());*/
				
	db.select2(sql, (rs)->{//Lambda:主要用于简化匿名内部类(JDK8+)
        //因为rowMapper参数指向IRrowMapper接口实现类对象,所以此处将调用接口实现类中所实现的rowMapper方法  多态
		try {
			if(rs.next()) {
				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.");
		

完整代码请见个人博客https://blog.csdn.net/m0_46383618/article/details/106224947

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值