第一个jdbc的增删改查和抽取工具类

149 阅读3分钟

一、打开idea新建一个项目,然后右键新建module(我起的module名jdbc),一路点下去

image.png

二、下载mysql驱动

mac安装mysql驱动:https://blog.csdn.net/weixin_45364220/article/details/123158074

三、加载mysql驱动

1.在idea上点击 File->Project.structure...->Modules->jdbc->右边+JARs..

image.png

2.选择刚才下载的mysql驱动的jar文件即可,然后在外部库看到mysql驱动即可,如下图

image.png

image.png

3.将下载好的mysql文件里的jar文件拷贝到新建的moudle(jdbc)里面,新建一个lib文件夹下面,如下图

image.png

4.然后右键新添加到lib下的jar文件,然后点击Add as library确定即可 ,如下成功

image.png

四、写一个最简单的连接数据库查询

package com;

import java.sql.*;

public class Demo01 {
    public static void main(String[] args) {
        try {
            // 1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 2.创建连接  localhost可以换成127.0.0.1或者其他数据库地址, 3306是默认端口,company是我的数据库
            String url = "jdbc:mysql://localhost:3306/company";
            String usr = "root";
            String pwd = "mm7701327";
            Connection con = DriverManager.getConnection(url,usr,pwd);
            // 3.创建statement执行sql的对象
            Statement statement = con.createStatement();
            String sql = "select * from emp";
            // 4.返回结果集
            ResultSet rs = statement.executeQuery(sql);
            while(rs.next()) {
                // id,empname,mgr都是我数据库表的字段名
                int id = rs.getInt("id");
                String empname= rs.getString("empname");
                int mgr = rs.getInt("mgr");
                int deptno = rs.getInt("deptno");
                String address = rs.getString("address");
                String salary = rs.getString("salary");
                System.out.println(id+" " + empname + " " + mgr + " " + deptno + " " + address + " " + salary);
            }
            rs.close();
            statement.close();
            con.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

五、完整的增删改查抽取工具类(上述一二三完成的前提下,驱动导入好)

1.要用到的文件目录

image.png

2.对应文件目录看代码吧

db.properties

#本地的配置文件,不懂代码的也可以改,改好连接的数据库即可运行
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/company
user=root
pwd=mm7701327

JDBCUtil

// 工具类 JDBCUtil
package util;

import java.sql.*;
import java.util.ResourceBundle;

public class JDBCUtil {
    // 一般连接数据库的驱动名,url,user,password不经常改,新建一个配置文件放入就行,一般都放在src根目录下,这样改数据库直接不懂的也可以改配置文件
    private static final String driverClass;
    private static final String url;
    private static final String user;
    private static final String pwd;

    static  {
        // 给上面的常量赋值, 读取配置文件db.properties,配置文件必须key=value的方式存
        // final修饰的变量只能被赋值一次,之后再也不能修改,static的执行顺序是由上而下执行
        ResourceBundle rb = ResourceBundle.getBundle("db");
        driverClass = rb.getString("driverClass");
        url = rb.getString("url");
        user = rb.getString("user");
        pwd = rb.getString("pwd");
    }

    static {
        // 加载驱动的时候刚加载类执行一边就行了,不用每次增删改查都要调用一次
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 抽取共用部分,加载驱动,获取连接对象,关闭资源
    public static Connection connection() throws SQLException {
        Connection conn = null;
        conn = DriverManager.getConnection(url,user,pwd);
        return conn;
    }
    // 关闭资源
    public static void close(ResultSet rs, Statement statement,Connection conn) throws SQLException {
        if(rs != null) {
            rs.close();
        }
        if(statement != null) {
            statement.close();
        }
        if(conn != null) {
            conn.close();
        }
    }
}

Demo03

// Demo03
package com;

import util.JDBCUtil;

import java.sql.*;

public class Demo03 {
    public static void main(String[] args) {
        //
//        Demo03.add();
//        Demo03.delete();
//        Demo03.update();
        Demo03.select();
    }
    // 添加
    public static int add() {
        // 调用JDBCUtil初始化连接和加载
        Connection con = null;
        Statement statement = null;
        int rs = 0;
        try {
            con = JDBCUtil.connection();
            // 创建statement执行sql的对象
            statement = con.createStatement();
            String sql = "insert into emp(id,empname,deptno,address,salary) values(10009,'路飞',1004,'风车村',15000)";
            // 4.返回结果
            rs = statement.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                JDBCUtil.close(null,statement,con);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return rs;
    }
    // 删除
    public static int delete() { // 调用JDBCUtil初始化连接和加载
        Connection con = null;
        Statement statement = null;
        int rs = 0;
        try {
            con = JDBCUtil.connection();
            // 创建statement执行sql的对象
            statement = con.createStatement();
            String sql = "delete from emp where id = '10009'";
            // 4.返回结果
            rs = statement.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                JDBCUtil.close(null,statement,con);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return rs;
    }
    // 更新
    public static int update() {
        Connection con = null;
        Statement statement = null;
        int rs = 0;
        try {
            con = JDBCUtil.connection();
            // 创建statement执行sql的对象
            statement = con.createStatement();
            String sql = "update emp set empname='里斯',salary=1000 where address = '青岛'";
            // 4.返回结果
            rs = statement.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                JDBCUtil.close(null,statement,con);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return rs;
    }
    // 查询
    public static void select() {
        Connection con = null;
        Statement stament = null;
        ResultSet rs = null;
        try {
            // 加载驱动, 连接成功
            con = JDBCUtil.connection();
            // 创建stament对象执行sql
            stament = con.createStatement();
            String sql = "select * from emp";
            // 接收结果集
            rs = stament.executeQuery(sql);
            while (rs.next()){
                int id = rs.getInt("id");
                String empname= rs.getString("empname");
                int mgr = rs.getInt("mgr");
                int deptno = rs.getInt("deptno");
                String address = rs.getString("address");
                String salary = rs.getString("salary");
                System.out.println(id+" " + empname + " " + mgr + " " + deptno + " " + address + " " + salary);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                JDBCUtil.close(rs,stament,con);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
}