JDBC+MySQL实现简单的数据库增删改查操作并控制台进行输入输出(详细)

该博客以简单用户表为例,介绍Java连接MySQL数据库项目的实现。先在Idea新建Java项目并导入jar包,接着创建数据库和用户数据表。之后编写实体类映射字段,工具类编写连接属性和函数,测试类实现增删改查操作,最后展示运行效果图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,直接开始。
以一个简单的用户表为例,我将从导入jar包开始到最后实现,完全给大家讲解清楚。

1.创建项目,导入相关包

首先在Idea上新建Java项目,在web——》web-INF文件夹下创建lib文件夹,将jar包放到该文件夹下,之后右键点击jar包,选择generate选项,弹出对话框不用修改点击确定即可。这样jar包就导入完成了

2.数据库创建

创建数据库,建立用户数据表,将id字段设为主键
在这里插入图片描述
到这里为止,前期的准备工作就都完成了,接下来就可以开始我们的代码编写工作了
我先把文件的结构放在这
在这里插入图片描述

实体类

首先我们要构造一个实体类,把数据库中的字段映射到我们的代码中

package com.zhongruan;
//实体类  映射数据库字段
public class User {
    //1.对属性的封装
    private int id;//用户ID
    private String username;//用户名
    private String password;//用户密码

    //2.对getter and setter
    //自动生成,右键generator——》getter and setter
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    //3.构造方法
    //shift键,全选
    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    //Ctrl键取消选择
    public User() {
    }

    //4.toString方法的重写

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

工具类

在这个类里面主要是编写连接数据库的一些属性值和函数

package com.zhongruan;

import java.sql.*;

public class DBUtil {
    //对于属性的封装
    private static String driver="com.mysql.jdbc.Driver";
    private static String url="jdbc:mysql://localhost:3306/java7?userSSL=true&utf8characterEncoding=utf-8&user=root&password=123";
    private static String user="root";
    private static String password="123";

    //1.获取驱动
    static{
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //2.创建连接
    public static Connection get_Conn() throws SQLException {
            Connection conn = DriverManager.getConnection(url, user, password);
//            System.out.println("数据库连接成功"+conn);

        return conn;
    }

    //3.关闭连接
    public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException {
        if(rs!=null){
            rs.close();
        }
        if(pstm!=null){
            pstm.close();
        }
        if(conn!=null){
            conn.close();
        }
    }

    public static void main(String[] args){
        try {
            get_Conn();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

测试类

这里面主要是实现增删改查的操作函数以及主函数,其中主函数以菜单的形式将上述各功能进行整合,可以在控制台进行选择,进行输入输出对数据库中的数据进行操作
直接放代码

package com.zhongruan;

import java.util.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import static javafx.application.Platform.exit;

public class TestUser2 {

    Connection conn=null;
    PreparedStatement pstm=null;
    ResultSet rs=null;

    //1.增加
    public void addUser(User user) {
        String sql = "insert into tb_user(username,password) values(?,?)";
        try {
            //1.获取连接
            conn = DBUtil.get_Conn();
            //2.获取存放sql语句的对象
            pstm = conn.prepareStatement(sql);
            //3.填坑
            pstm.setString(1,user.getUsername());
            pstm.setString(2,user.getPassword());
            //4.执行sql并得到结果
            int i = pstm.executeUpdate();
            //5.处理结果
            if(i>0){
                System.out.println("增加成功");
            }else{
                System.out.println("增加失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //6.关闭连接
            try{
                DBUtil.get_CloseConn(null,pstm,conn);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }

    //2.删除
    public void deleteUser(User user){
//        String sql = "delete from tb_user where username='%"+name+"%'";
        String sql = "delete from tb_user where username=?";
        try {
            //1.获取连接
            conn = DBUtil.get_Conn();
            //2.获取存放sql语句的对象
            pstm = conn.prepareStatement(sql);
            //填坑
            pstm.setString(1,user.getUsername());
            //3.执行sql并得到结果
            int i=pstm.executeUpdate();
            //4.处理结果
            if(i>0){
                System.out.println("删除成功");
            }else{
                System.out.println("删除失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //5.关闭连接
            try{
                DBUtil.get_CloseConn(null,pstm,conn);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }

    //3.修改
    public void updateUser(User user){
        String sql = "update tb_user set password=? where username=?";
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement(sql);
            //填坑
            pstm.setString(1,user.getPassword());
            pstm.setString(2,user.getUsername());
            int i = pstm.executeUpdate();
            if(i>0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try{
                DBUtil.get_CloseConn(null,pstm,conn);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }

    //4.查询用户列表
    public void selectAllUser(){
        String sql = "select * from tb_user";
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement(sql);
            rs = pstm.executeQuery();
            while(rs.next()){
                System.out.print("用户ID\t用户名\t用户密码\n");
                System.out.print(rs.getInt(1)+"\t\t"+rs.getString(2)+"\t"+rs.getString(3)+"\n");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try{
                DBUtil.get_CloseConn(rs,pstm,conn);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }

    //5.依据关键字查询用户
    public void selectUser(String name){
        String sql = "select * from tb_user where username like '%"+name+"%'";
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement(sql);
            rs = pstm.executeQuery();
            while(rs.next()){
                System.out.print("用户ID\t用户名\t用户密码\n");
                System.out.print(rs.getInt(1)+"\t\t"+rs.getString(2)+"\t"+rs.getString(3));
                System.out.println();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try{
                DBUtil.get_CloseConn(rs,pstm,conn);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }

    //查找指定用户
    public int selectOneUser(String name){
        String sql = "select * from tb_user where username like '%"+name+"%'";
        try {
            conn = DBUtil.get_Conn();
            pstm = conn.prepareStatement(sql);
            rs = pstm.executeQuery();
            while(rs.next()){
                return 1;
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try{
                DBUtil.get_CloseConn(rs,pstm,conn);
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        return 0;
    }

    //打印菜单
    public static void printMenu(){
        System.out.println("菜单");
        System.out.println("1.增加用户");
        System.out.println("2.删除用户");
        System.out.println("3.修改用户密码");
        System.out.println("4.查找指定用户");
        System.out.println("5.输出用户信息列表");
        System.out.println("0.退出");
        System.out.println("请输入菜单选项:");
    }

    public static void main(String[] args){
        TestUser2 t2 = new TestUser2();
        Scanner scan = new Scanner(System.in);
        int item;
        printMenu();
        item = scan.nextInt();
        while(item!=0){
            switch(item){
                case 1:
                    System.out.print("请输入要添加的用户名:");
                    String addName = scan.next();
                    while(t2.selectOneUser(addName) != 0){
                        System.out.print("该用户名已存在,请重新输入:");
                        addName = scan.next();
                    }
                    System.out.print("请输入该用户的密码:");
                    String addPass = scan.next();
                    User user = new User(addName,addPass);
                    t2.addUser(user);
                    break;
                case 2:
                    System.out.print("请输入要删除的用户的用户名:");
                    String dltName = scan.next();
                    User dltUser = new User(dltName,null);
                    t2.deleteUser(dltUser);
                    break;
                case 3:
                    System.out.print("请输入要修改的用户的用户名:");
                    String updateName = scan.next();
                    System.out.print("请输入新密码:");
                    String newPass = scan.next();
                    User upUser = new User(updateName,newPass);
                    t2.updateUser(upUser);
                    break;
                case 4:
                    System.out.print("请输入要查询的用户名关键字:");
                    String sltName = scan.next();
                    t2.selectUser(sltName);
                    break;
                case 5:
                    t2.selectAllUser();
                    break;
        }
            printMenu();
            item = scan.nextInt();
        }
        exit();


    }


}

最后给大家看一下运行的效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值