会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题

老师我这个是什么问题为啥链接失败

Tue Nov 07 04:20:51 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 782 milliseconds ago.  The last packet sent successfully to the server was 774 milliseconds ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:201)
	at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4869)
	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1656)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1217)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2189)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2220)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2015)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at jdbcTest.main(jdbcTest.java:22)
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
	at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
	at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:101)
	at sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186)
	... 18 more

image.png

JAVA 全系列/第三阶段:数据库编程/JDBC技术 1848楼
JAVA 全系列/第三阶段:数据库编程/MySQL数据库的使用 1849楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 1850楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 1851楼

package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

public class JdbcUtil {

    private static String driver;

    private static String jdbcUrl;

    private static String user;

    private static String password;


    static {
        //读取Properties文件
        ResourceBundle bundle = ResourceBundle.getBundle("src/JDBC/jdbc");
        driver = bundle.getString("driver");
        jdbcUrl = bundle.getString("jdbcUrl");
        user = bundle.getString("user");
        password = bundle.getString("password");

        try {
            //链接数据库
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取Connection对象
     * @return
     */
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(jdbcUrl,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * 关闭Statement
     * @param statement
     */
    public static void closeStatement(Statement statement){
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *   关闭Connection
     * @param connection
     */
    public static void closeConnection(Connection connection){
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭所有资源
     * @param statement
     * @param connection
     */
    public static void closeAll(Statement statement,Connection connection){
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }


}


package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import static JDBC.JdbcUtil.closeAll;
import static JDBC.JdbcUtil.getConnection;

public class jdbcTest02 {
    public static void main(String[] args) {
        jdbcTest02 jdbcT = new jdbcTest02();
        jdbcT.insertDepartments("教学部",19,19);
    }

    public void insertDepartments(String department_name,int department_id,int location_id){
        Connection connection = null;
        Statement statement = null;
        try {
            connection = JdbcUtil.getConnection();
            statement = connection.createStatement();
            String sql = "insert into departments value("+department_id+",'"+department_name+"',"+location_id+")";
            System.out.println(sql);
            statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            closeAll(statement, connection);
        }
    }

}

老师能帮忙看一下哪里的问题嘛

JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1852楼

package jdbc.stu.com;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;


/**

 * 数据库操作

 * 对test2中temhum02进行修改

 * 

 * */


public class MsqlTest01 {

public void update(){

Connection con=null;//创建与数据库链接的会话对象

Statement state=null;//执行SQL的语句并返回结果-对象

try {

//1----注册驱动类型,什么数据库用什么

Class.forName("com.mysql.jdbc.Driver");//反射技术的应用生成Class对象;

//2----获取链接;

//这里的格式是固定的,前面是MYSQL的数据库的注入,主机名-端口号-指定的库-指定字符集-用户-密码

con=DriverManager.getConnection("jdbc:mysql://127.168.44.1:3306/test2?useUnicode=true&characterEncoding=utf-8",

"root", "fhg1996");

//创建向数据库发送SQL Statement接口类型的对象;

state=con.createStatement();

//3----执行SQL语句

String sql="insert into temhum02 values(1,23.5,88.7)";

int flag=state.executeUpdate(sql);

System.out.println("数据更改成功"+flag);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(state!=null){

try {

state.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}if(con!=null){

try {

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

public static void main(String[] args){

MsqlTest01 my=new MsqlTest01();

my.update();

}


}

老师,不晓得哪里错了

JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1853楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 1854楼
JAVA 全系列/第三阶段:数据库编程/MySQL数据库的使用 1855楼
JAVA 全系列/第三阶段:数据库编程/MySQL数据库的使用 1856楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 1857楼

把propertis文件放进src里了,

8KUE(U7NE([[HUK4JCLV~ZN.pngYZ@K@PK%24}@BIIKTV90GUV.png

package com.bjsxt;

import java.sql.Connection;
import java.sql.Statement;

public class JdbcTest {
    //向Departments表中添加一条数据
    public void insertDepartments(String department_name, int location_id) {
        Connection conn = null;
        Statement state = null;

        try {
           conn= JdbcUtil.getConnection();
            String sql = "insert into departments values(default,'" + department_name + "'," + location_id + ")";
            state = conn.createStatement();
            int flag = state.executeUpdate(sql);
            System.out.println(flag);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
               JdbcUtil.closeResource(state,conn);
            }
        }

        //更新departments表中的department_id为6的数据,将部门名称改为教学部,location_id改为6
        public void updateDepartments(String department_name,int location_id, int department_id){
            Connection conn = null;
            Statement state = null;
            try {
                conn= JdbcUtil.getConnection();
                state = conn.createStatement();
                String sql="update departments d set d.department_name='"+department_name+"',d.location_id="+location_id+" where d.department_id="+department_id;

                int flag=state.executeUpdate(sql);
                System.out.println(flag);
                } catch (Exception e) {
                 e.printStackTrace();

                 } finally {
                     JdbcUtil.closeResource(state,conn);
                    }

                }
        public static void main (String[]args){
            JdbcTest test = new JdbcTest();
            test.insertDepartments("教学部", 9);
            //test.updateDepartments("研发部",1,1);
        }
    }
package com.bjsxt;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

/*
jdbc工具类
 */
public class JdbcUtil {
    private static String driver;
    private static String jdbcUrl;
    private static String username;
    private static String userpassword;

    static{
        //读取Properties文件
        ResourceBundle bundle=ResourceBundle.getBundle("jdbc");
        driver=bundle.getString("driver");
        jdbcUrl=bundle.getString("jdbcUrl");
        username=bundle.getString("username");
        userpassword=bundle.getString("userpassword");
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //获取Connection对象
    public static Connection getConnection(){
        Connection conn=null;
        try {
           conn= DriverManager.getConnection(jdbcUrl,username, userpassword);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    //关闭Statement
    public static void closeStatement(Statement state){
            try {
                if(state !=null) {
                    state.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();

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

        }
    }
    //关闭资源
    public static void closeResource(Statement state,Connection conn){
            closeStatement(state);
            closeConnection(conn);
    }
}
jdbc.driver=com.mysql.jdbc.Driver;
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/bjsxt?useUnicode=true&characterEncoding=utf-8;
jdbc.username=root;
jdbc.userpassword=root;


JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 1859楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637