尝试方法:
1.AndroidManifest.xml添加网络权限,这里需要注意:修改完成之后需要在模拟器里卸载app,重新运行
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.mysql-connector-java8.0的版本需要把driver从com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver
(可以打开com.mysql路径包查看你的driver类在哪里,com.mysql.jdbc下虽然也有Driver,但是仅仅是为了提示真正有效的Driver的路径)
3.url后添加这一串:能查到有问题的我都加了
"jdbc:mysql://192.168.1.58:3306/mydb??useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true"
4.mysql新建用户,授予所有ip可访问,并授予该用户所有权限(中文部分自行更改),用这个用户密码连接
create user '用户名'@'%' identified by '密码';
grant all privileges on `数据库名`.* to '用户名'@'%';
flush privileges;
5.报错The last packet sent successfully to the server was 0 milliseconds ago
修改mysql中的my.ini文件,添加
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
6.Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
java.net.SocketException: socket failed: EACCES (Permission denied) 报错以及网络不可达等问题
方案1:卸载app重新运行
方案2:添加新的模拟器
方案3:重新下载jar包,这里选择5.0版本,我的mysql版本是mysql8.0.25,但是我用mysql-connector-java8.0.25一直连接失败,实在没办法了就更改为低版本。
运行成功!