DBUtils的错误,不理解这个,必须要和数据库连接池一起使用吗,可以不用数据库连接池吗


package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import static java.lang.Class.forName;

public class DBUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/admin";
    private static final String USER = "admin";
    private static final String PASSWORD = "123456";

    static {
        try {
            forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConn() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void closeConn(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void closePreparedStatement(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void closeResultSet(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

这个代码为什么不行,就是DBUtils,不知道什么原因的错误

img


这里报错

  1. 检查 forName 那边加载驱动是否有问题,如果有说明 对应的驱动jar包可能不存在,或者 版本不匹配
    mysql 5.x 对应 5.x的驱动 【com.mysql.jdbc.Driver】
    mysql 8.x 对应 8.x的驱动【com.mysql.cj.jdbc.Driver】 注意这里 多个cj
  2. 检查 数据库链接URL中是否包含空格,中文字符等,如果有去掉空格,改成英文

不是连接池,缺少数据库驱动jar:mysql-connector-java

从错误截图看,应该是驱动和数据库版本不匹配

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/643896
  • 除此之外, 这篇博客: 数据库连接池和DBUtils详解中的 数据库连接池 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池.