You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio连接MySQL报java.sql.SQLType类缺失错误咨询

问题原因

这个报错和你配置的10.0.2.2本地地址映射没有关系,核心原因是你引入的com.mysql.cj.jdbc.Driver属于MySQL Connector/J 8.x系列驱动,该版本驱动依赖JDK 1.8引入的java.sql.SQLType接口,但Android系统内置的JDBC类库是经过裁剪的残缺版本,并没有实现这个接口,运行时自然会抛出类找不到的错误。

排查解决方法
  • 快速修复方案(仅适合本地开发调试使用):替换兼容Android的MySQL驱动版本
    移除当前依赖的8.x版本MySQL驱动,换成mysql-connector-java:5.1.49版本,这个版本不依赖java.sql.SQLType,可以在Android环境正常运行。
    更换驱动后需要同步修改代码里的驱动类加载语句,将8.x版本带cj段的驱动类名替换为5.x版本的类名,修改后的可运行示例代码如下:
import android.os.AsyncTask;
import java.sql.DriverManager;

public class MySql extends AsyncTask<Void, Void ,Void> {
    @Override
    protected Void doInBackground(Void ... voids) {
        try{
            // 注意5.x版本驱动类路径不存在cj段
            Class.forName("com.mysql.jdbc.Driver");
            String ssl = "verifyServerCertificate=false&useSSL=true&Unicode=true";
            String timeZONE = "serverTimezone=Europe/Moscow";
            String url ="jdbc:mysql://10.0.2.2:3306/alphaProject?"+timeZONE+"&"+ssl;
            DriverManager.getConnection(url,"root","12345678");
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}
  • 生产环境方案:禁止Android端直连MySQL
    移动端直连数据库本身是不符合开发规范的做法,存在大量风险:
    • 数据库账号密码硬编码在APK安装包中,极易被反编译泄露,造成数据库被拖库、数据被篡改等安全问题
    • 没有成熟的连接池管理机制,移动端网络不稳定的场景下很容易出现连接泄漏、请求阻塞等问题
    • 数据库操作逻辑全部暴露在客户端,后续业务迭代、权限管控的维护成本极高
      正规实现方式是在服务端封装一层HTTP/HTTPS业务接口,Android端仅负责发起网络请求调用接口,由服务端程序完成数据库的增删改查操作。

内容的提问来源于stack exchange,提问作者ahmed rashed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:48:21