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

如何在Android Studio中通过JDBC连接Java版Android应用与MySQL?附示例及报错

Android Studio中通过JDBC连接MySQL数据库(Java版)

一、前置准备

  • 添加JDBC依赖:在Module级别的build.gradle文件的dependencies块中加入MySQL驱动依赖:
    implementation 'mysql:mysql-connector-java:8.0.33'
    
    注:请根据你的MySQL版本选择对应驱动版本,MySQL 8.0+建议用8.x版本驱动。
  • 适配Android 9+:由于Android 9默认禁止明文网络请求,需在AndroidManifest.xml的<application>标签中添加:
    android:usesCleartextTraffic="true"
    
    若使用SSL连接MySQL,可忽略此配置。
  • MySQL端配置:确保MySQL服务允许远程连接:
    1. 修改MySQL用户权限(登录MySQL控制台执行):
      GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'%' IDENTIFIED BY 'your_password';
      FLUSH PRIVILEGES;
      
    2. 开放服务器3306端口,或关闭防火墙(测试环境可用,生产环境建议配置防火墙规则)。

二、连接示例代码

注意:Android禁止在主线程执行网络操作,需在子线程中完成数据库连接与操作,以下是使用Thread的简单示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySQLHelper {
    // 数据库配置信息
    private static final String DB_URL = "jdbc:mysql://your_server_ip:3306/your_database_name?useSSL=false&serverTimezone=UTC";
    private static final String DB_USER = "your_username";
    private static final String DB_PWD = "your_password";

    public static void connectAndQuery() {
        new Thread(() -> {
            Connection connection = null;
            Statement statement = null;
            ResultSet resultSet = null;

            try {
                // 加载驱动(MySQL 8.0+可省略,驱动会自动注册)
                Class.forName("com.mysql.cj.jdbc.Driver");
                // 建立连接
                connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PWD);
                // 创建Statement执行查询
                statement = connection.createStatement();
                String query = "SELECT * FROM your_table_name LIMIT 10";
                resultSet = statement.executeQuery(query);
                // 处理查询结果
                while (resultSet.next()) {
                    String data = resultSet.getString("column_name");
                    // 可将结果通过Handler或LiveData传递到主线程更新UI
                    System.out.println("查询到数据:" + data);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 关闭资源,顺序从后往前
                try {
                    if (resultSet != null) resultSet.close();
                    if (statement != null) statement.close();
                    if (connection != null) connection.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}
关于@superLint函数报错的解决办法

首先说明:@superLint并非Android Studio或Lint工具的默认注解/函数,推测是你自定义的Lint规则或注解。以下是通用排查步骤:

  1. 检查自定义定义的正确性

    • 如果是自定义注解:确认@Target、@Retention等元注解配置是否符合使用场景,比如若用于方法,需设置@Target(ElementType.METHOD),@Retention需设置为RetentionPolicy.SOURCE或CLASS以适配Lint扫描。
    • 如果是自定义Lint函数:检查函数的参数类型、返回值是否符合Lint API要求,比如是否正确继承了Detector类,是否在IssueRegistry中注册了对应的规则。
  2. 查看具体错误日志
    编译或Lint扫描时的错误提示是关键:

    • 若提示“找不到符号”:确认注解/函数的包是否正确导入,或定义文件是否存在于正确的源码目录中。
    • 若提示Lint规则冲突:检查自定义规则是否与Android默认Lint规则的ID重复,或逻辑上存在冲突。
    • 若提示编译错误:检查自定义代码的语法是否正确,比如是否有未捕获的异常、变量未初始化等问题。
  3. 清理与重建项目

    • 执行Android Studio的File > Invalidate Caches... > Invalidate and Restart,清理缓存后重新编译项目,排除缓存导致的异常。
    • 执行Build > Clean Project和Build > Rebuild Project,确保编译产物是最新的。
  4. 简化测试
    编写一个最小化的测试示例:仅保留@superLint的使用和必要的定义代码,排除其他业务代码的干扰,确认是否依然报错,以此定位问题是否由其他代码引发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:45:39