android 使用jdbc 远程连接MySQL8.0 问题
异常1:
异常提示:java.sql.SQLException: null, message from server: "Host is not allowed to connect to this MySQL server
异常位置:
conn=DriverManager.getConnection();
造成该异常的原因是访问权限不够,可以使用以下命令查看一下权限
如果root用户权限为localhost则外网无法访问,需要修改一下权限,并提交修改
这样第一个问题就解决了
异常2:
异常信息:com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
异常位置:
conn=DriverManager.getConnection();
我出现这个问题的原因是jar和Mysql版本不匹配
保持版本一致即可
异常3:
异常信息: java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.art/javalib/core-oj.jar)
异常位置:
Class.forName("com.mysql.jdbc.Driver");
这个异常网上找了半天,在build.gradle文件中加上
compileOptions{
sourceCompatibilityJavaVersion.VERSION_1_8
targetCompatibilityJavaVersion.VERSION_1_8
}
异常4:
异常信息:NoClassDefFoundError: Failed resolution of: Ljava/sql/SQLType;
找不到SQLType这个类,可以在Android Studio上搜出这个类,自己构造一个一样的,这样。