学生信息管理-数据库版

前置条件

创建student表并添加示例数据

功能要求

代码实现

import java.sql.*;
import java.util.Scanner;
 
public class Main {
    // 加载驱动
    public final static String driver="com.mysql.cj.jdbc.Driver";
 
    public final static String url="jdbc:mysql://localhost:3306/javasql";
    /*
        定义了一个公共的、最终的(即不能被重新赋值)、且是静态的字符串变量,名为'url'。
        它的值是"jdbc:mysql://localhost:3306/javasql",
        这通常是一个连接到MySQL数据库的JDBC(Java Database Connectivity)URL。
        这个URL指定了如何连接到位于本地主机(localhost)的MySQL数据库服务器(端口号为3306),
        以及要连接到的数据库名称为'javasql'。
    */
    public final static String user="root"; // 用户名
    public final static String password="654321"; // 登录密码
 
    static Connection conn;
    static Scanner in;
 
    static {
        try {
            // 设置连接对象
            Class.forName(driver);
            in=new Scanner(System.in);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("加载失败");
        }
    }
 
    // 获取连接对象
    public static Connection getConn(){
        try{
            // 返回连接对象
            return DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
 
    // 添加数据
    public static void insert() throws SQLException {
        System.out.println("\n\n-------插入数据-----------");
        String sql="insert into student values(null,?,?,?)";
        PreparedStatement ps = conn.prepareStatement(sql);
 
        System.out.print("请输入需要添加的学生个数:");
        int cnt=in.nextInt();
        while(cnt-- > 0){
            System.out.println("\n\n开始添加");
            System.out.print("请输入学生姓名:");
            ps.setString(1,in.next());
            System.out.print("请输入学生电话:");
            ps.setString(2,in.next());
            System.out.print("请输入学生性别:");
            ps.setString(3,in.next());
            ps.executeLargeUpdate();    // 执行sql语句
            System.out.println("添加成功");
        }
        ps.close();
        return;
    }
    // 查询数据
    public static void inquire() throws SQLException {
        System.out.println("\n\n-------查询数据-----------");
        System.out.println("1、根据姓名查询 \t\t\t\t 2、根据性别查询");
        System.out.println("3、根据电话查询 \t\t\t\t 4、根据电话前缀查询");
        System.out.println("5、查询所有数据");
        System.out.println("其他输入:退出");
        System.out.print("\n请输入你的选择:");
 
        String sql=null;
        String choose=in.next();
        switch (choose){
            case "1" : {
                System.out.print("请输入需要查询的学生姓名:");
                sql = "select * from student where name = ?";   // sql语句
                break;
            } case "2" : {
                System.out.print("请输入需要查询的性别:");
                sql = "select * from student where sex = ?";   // sql语句
                break;
            } case "3" : {
                System.out.print("请输入需要查询的电话号码:");
                sql = "select * from student where tel = ?";   // sql语句
                break;
            } case "4" : {
                System.out.print("请输入需要查询的电话号码前缀(注意需要以%为结尾):");
                sql = "select * from student where tel  like ? ";   // sql语句
                break;
            } case "5" : {
                sql="select * from student";
                break;
            }
            default:
                System.out.println("退出查询!");
                return;
        }
        PreparedStatement ps=conn.prepareStatement(sql);    // 生成预编译sql语句的对象
        if(!"5".equals(choose)) ps.setString(1, in.next());
 
        byte flag=0;
        ResultSet res = ps.executeQuery();
        while(res.next()){
            flag=0x01;
            System.out.print("学号:"+res.getInt(1)+"\t");
            System.out.print("姓名:"+res.getString(2)+"\t");
            System.out.print("电话:"+res.getString(3)+"\t");
            System.out.println("性别:"+res.getString(4));
        }
        if(0 == flag){
            System.out.println("查无此记录");
        }else {
            System.out.println("查询成功!");
        }
        res.close();
        ps.close();
        return;
    }
    // 删除数据
    public static void delete() throws SQLException{
        System.out.println("\n-------删除数据---------");
        System.out.println("1、根据id删除 \t\t\t\t 2、根据表中位置删除");
        System.out.println("3、根据姓名删除 \t\t\t\t 4、清空所有学生数据");
        System.out.println("6、退出操作");
 
        String sql=null;
        PreparedStatement ps=null;
        System.out.print("请输入你的选择:");
        String choose=in.next();
        switch (choose){
            case "1" : {
                System.out.print("请输入需要删除学生的id:");
                sql="delete from student where id = ? ";
                break;
            } case "2" : {
                // 连续执行两次语句
                System.out.print("请输入需要删除第表中第几条数据:");
                sql="set @tmp=(select id from student limit ?,1); ";
                ps = conn.prepareStatement(sql);
                ps.setInt(1,(in.nextInt()-1));
                ps.executeLargeUpdate();
                sql="delete from student where id=@tmp ";
                ps=conn.prepareStatement(sql);
                ps.executeLargeUpdate();
                System.out.println("操作成功");
                return;
            } case "3" : {
                System.out.print("请输入需要删除学生的姓名:");
                sql="delete from student where name = ? ";
                break;
            } case "4" : {
                sql="delete from student";
            } case "6" : {
                System.out.println("退出成功!");
                return;
            }
            default:{
                System.out.println("请重新选择");
                break;
            }
        }
        ps=conn.prepareStatement(sql);
        if(!"4".equals(choose)) { ps.setString(1,in.next()); }
        ps.executeLargeUpdate();    //执行语句
        System.out.println("删除成功");
        ps.close();
        return;
    }
    // 修改数据
    public static void amend() throws SQLException{
        System.out.println("------修改数据--------");
        System.out.println("1、修改表中某一位学生的姓名 \t\t\t\t 2、修改表中某一位学生的电话");
        System.out.println("其他:退出");
 
        String sql=null;
        PreparedStatement ps=null;
        System.out.print("\n请输入你的选择:");
        String choose=in.next();
 
        if(!("1".equals(choose) || "2".equals(choose))) { System.out.println("退出成功!"); return; }
 
        sql="set @tmp=(select id from student limit ? , 1) ";
        System.out.print("请输入修改的第几条数据:");
        ps=conn.prepareStatement(sql);
        ps.setInt(1,(in.nextInt()-1));
        ps.executeLargeUpdate();
 
        switch (choose){
            case "1" : {
                System.out.print("请输入修改后的姓名:");
                sql="update student set name= ? where id=@tmp";
                break;
            } case "2" : {
                System.out.print("请输入修改后的电话:");
                sql="update student set tel= ? where id=@tmp";
                break;
            }
        }
 
        ps=conn.prepareStatement(sql);
        ps.setString(1,in.next());
        ps.executeLargeUpdate();
        ps.close();
        System.out.println("操作成功!");
        return;
    }
 
    public static void main(String[] args) throws SQLException {
        conn=getConn();
        boolean flag=true;
        while(flag){
            System.out.println("\n----------学生信息管理--------------\n");
            System.out.println("1、添加操作 \t\t\t\t 2、查询操作");
            System.out.println("3、删除操作 \t\t\t\t 4、修改操作");
            System.out.println("5、退出");
            System.out.print("\n请输入你的选择:");
            switch (in.next()){
                case "1" : insert(); break; // 添加
                case "2" : inquire();break; // 查询
                case "3" : delete();break;  // 删除
                case "4" : amend();break;   // 修改
                case "5" : flag=false; break;
                default: System.out.println("请重新输入!"); break;
            }
        }
        System.out.println("\n退出成功!");
        conn.close();
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值