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

Kotlin用JDBC连MySQL报Could not create connection错误如何解决

问题排查与解决方法

1. 权限与网络配置检查

  • 先确认AndroidManifest.xml中已添加网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • Android 9及以上系统默认禁止明文网络请求,需要在<application>标签下添加属性允许明文流量:
    <application
        ...
        android:usesCleartextTraffic="true">
    
  • 确认测试设备/模拟器与MySQL所在的192.167.1.108处于同一局域网,3308端口未被防火墙拦截,且MySQL账号root允许非本地IP登录(需将root账号的host配置为%或对应设备IP)。

2. JDBC配置适配8.x驱动

你使用的是MySQL 8.0版本的驱动,原有配置存在兼容问题:

  • 驱动类已更新,将JDBC_DRIVER的值改为com.mysql.cj.jdbc.Driver
  • 8.x驱动要求URL补充时区、SSL等参数,修改DB_URL为:
    val DB_URL = "jdbc:mysql://192.167.1.108:3308/prueba?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"
    
  • 确认数据库root账号的密码确实为空,避免配置与实际不一致导致连接失败。

3. 线程规范修正

Android主线程禁止执行耗时网络操作,你当前直接在点击回调(主线程)中执行连接逻辑会被系统拦截,需放到子线程执行,示例修改:

buttonLogin.setOnClickListener{
    // 用子线程执行连接操作
    Thread {
        val connect = MySQLDatabaseConnector()
        connect.connect()
    }.start()
}

如果项目引入了协程,更推荐用lifecycleScope切IO线程执行,避免内存泄漏。

补充说明

直接在Android端通过JDBC连接数据库存在极大安全风险,客户端存储的数据库账号密码很容易被反编译获取,你后续改用Web Service做中间层的方案是合理的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:24:03