如何在Android Studio中通过JDBC连接Java版Android应用与MySQL?附示例及报错
Android Studio中通过JDBC连接MySQL数据库(Java版)
一、前置准备
- 添加JDBC依赖:在Module级别的
build.gradle文件的dependencies块中加入MySQL驱动依赖:
注:请根据你的MySQL版本选择对应驱动版本,MySQL 8.0+建议用8.x版本驱动。implementation 'mysql:mysql-connector-java:8.0.33' - 适配Android 9+:由于Android 9默认禁止明文网络请求,需在
AndroidManifest.xml的<application>标签中添加:
若使用SSL连接MySQL,可忽略此配置。android:usesCleartextTraffic="true" - MySQL端配置:确保MySQL服务允许远程连接:
- 修改MySQL用户权限(登录MySQL控制台执行):
GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; - 开放服务器3306端口,或关闭防火墙(测试环境可用,生产环境建议配置防火墙规则)。
- 修改MySQL用户权限(登录MySQL控制台执行):
二、连接示例代码
注意: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规则或注解。以下是通用排查步骤:
检查自定义定义的正确性
- 如果是自定义注解:确认
@Target、@Retention等元注解配置是否符合使用场景,比如若用于方法,需设置@Target(ElementType.METHOD),@Retention需设置为RetentionPolicy.SOURCE或CLASS以适配Lint扫描。 - 如果是自定义Lint函数:检查函数的参数类型、返回值是否符合Lint API要求,比如是否正确继承了
Detector类,是否在IssueRegistry中注册了对应的规则。
- 如果是自定义注解:确认
查看具体错误日志
编译或Lint扫描时的错误提示是关键:- 若提示“找不到符号”:确认注解/函数的包是否正确导入,或定义文件是否存在于正确的源码目录中。
- 若提示Lint规则冲突:检查自定义规则是否与Android默认Lint规则的ID重复,或逻辑上存在冲突。
- 若提示编译错误:检查自定义代码的语法是否正确,比如是否有未捕获的异常、变量未初始化等问题。
清理与重建项目
- 执行Android Studio的
File > Invalidate Caches... > Invalidate and Restart,清理缓存后重新编译项目,排除缓存导致的异常。 - 执行
Build > Clean Project和Build > Rebuild Project,确保编译产物是最新的。
- 执行Android Studio的
简化测试
编写一个最小化的测试示例:仅保留@superLint的使用和必要的定义代码,排除其他业务代码的干扰,确认是否依然报错,以此定位问题是否由其他代码引发。
内容的提问来源于stack exchange,提问作者NDhanvina
相关产品推荐
相关产品推荐

