Android Studio数据库连接出错:com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

Android Studio数据库连接出错:com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

数据库的ip地址,由于我是用Android studio自带的虚拟机去访问的,所以数据库的ip地址要填10.0.2.2,之前我填的都是自己本机的IP地址(通过cmd查ipconfig得到的IP地址),还有localhost,127.0.0.1之类的,都会报错。

在发现这个错误之前,我采用了许多方法(包括降低mysql-connector-java的版本到5.4.17,防止版本太高;关掉防火墙;把useSSL改为false等等),都没有用。

修改后成功运行的代码如下所示:

public class DButils {
    public Connection cn=null;
    private static final String TAG = "mysql11111";
    public static void mymysql(){
        final Thread thread =new Thread(new Runnable() {
            @Override
            public void run() {
                    // 1.加载JDBC驱动
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                        Log.v(TAG, "加载JDBC驱动成功");
                    } catch (ClassNotFoundException e) {
                        Log.e(TAG, "加载JDBC驱动失败");
                        return;
                    }

                    // 2.设置好IP/端口/数据库名/用户名/密码等必要的连接信息
                    String ip = "10.0.2.2";
                    int port = 3306;
                    String dbName = "srt";
                    String url = "jdbc:mysql://" + ip + ":" + port
                            + "/" + dbName+"?useSSL=false&serverTimezone = GMT%2B8";
                    // 构建连接mysql的字符串
                    String user = "root";
                    String password = "123456";

                    // 3.连接JDBC
                    try {
                        Connection conn = DriverManager.getConnection(url, user, password);
                        Log.d(TAG, "数据库连接成功");


                        String sql="select CoName from college";
                        Statement st=(Statement)conn.createStatement();
                        ResultSet rs=st.executeQuery(sql);
                        while(rs.next()){
                            String str=rs.getString("CoName");
                            Log.i("MainActivity",str);
                        }
                        conn.close();//一定要关闭
                        st.close();
                        rs.close();



                        conn.close();
                        return;
                    }
                    catch (SQLException e) {
                        Log.e(TAG, e.getMessage());
                    }

                }

        });
        thread.start();



    }

运行结果如下图所示:
Android Studio数据库连接出错:com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure_第1张图片

你可能感兴趣的:(数据库,mysql,android,studio)