JDBC中Java连接数据库进行增删改查操作出现的The url cannot be null及Could not create connection to database server. 报错

**最近在跟着B站up主遇见狂神说学习MySQL,到了JDBC部分,用Java链接数据库并进行增删改查操作,跟着打了一遍代码,但是出现大面积报错。代码如下:

配置文件db.propertiws与包装工具类JdbcUtils

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true
username=root
password=123456

public class JdbcUtils {
    private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;

    static {
        try {
            InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(in);

            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");

            //1.加载驱动,只需一次
            Class.forName(driver);

        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //获取连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }

    //释放连接资源,倒序
    public static void release(Connection conn, Statement st, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (st != null) {
            try {
                st.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

Java连接数据库进行数据插入

public class TestInsert {
    public static void main(String[] args) {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;

        try {
            //获取数据库连接
            conn = JdbcUtils.getConnection();
            //获取sql连接对象
            st = conn.createStatement();

            String sql = "UPDATE `users` SET `NAME`='tianpan',`email`='[email protected]' WHERE id=1";

            int i = st.executeUpdate(sql);
            if (i > 0) {
                System.out.println("插入成功");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

最开始在工具类中误将几个字段的getProperty方法前重新声明了一遍,即多打了这几个String
JDBC中Java连接数据库进行增删改查操作出现的The url cannot be null及Could not create connection to database server. 报错_第1张图片
结果出现报错The url cannot be null.

改正后经反复检查确认代码无误,然而运行时仍旧出现名为Could not create connection to database server. Attempted reconnect 3 times. Giving up.的大片报错
JDBC中Java连接数据库进行增删改查操作出现的The url cannot be null及Could not create connection to database server. 报错_第2张图片

在CSDN不断寻求解决方案,试过更改最长连接时间及重启MySQL服务的方法,无果。
最终看到一篇同样进行jdbc操作的文章,于是复制其url进行尝试,惊奇地发现成功了。
反复比对url的不同得出这个报错的原因在于:useSSL应该设置为false
将我的url中这一项单独更改后也可以成功操作。

这篇CSDN文章 关于数据库连接中useSSL是否为true 或者 false的选择.大概描述了useSSL的选择问题。

你可能感兴趣的:(mysql,jdbc,java)