前置条件
创建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();}
}