安卓开发(三)
摘要
在基于大模型的智能衣橱管理系统安卓项目开发中,数据持久化存储是核心环节,用户账号、衣橱衣物信息、穿搭记录等数据都需要可靠数据库支撑。本文以 Windows11 + Android Studio + MySQL 8.0 为开发环境,手把手实现安卓端直连 MySQL 数据库,包含驱动配置、连接代码编写、权限放开、时区 / SSL / 防火墙等全场景报错解决。
一、前言
在智能衣橱项目中,安卓端需要与后端数据库进行数据交互:
- 存储用户账号密码
- 保存衣物图片、分类、标签
- 记录虚拟试穿历史、穿搭方案
- 实现多设备数据同步
安卓不能直接主线程连接 MySQL,必须使用 JDBC 连接 + 子线程异步访问,且需要配置驱动、开放数据库权限、关闭安全拦截,否则会出现各种连接失败。本文从环境准备 → 配置依赖 → 编写连接代码 → 测试连通 → 解决所有报错完整教学。
二、开发环境准备
- Windows 11 64 位
- Android Studio Hedgehog(新版通用)
- MySQL 8.0.36(本地数据库)
- 手机 / 模拟器与电脑在同一局域网
- 项目语言:Kotlin
三、第一步:给 Android 项目添加 MySQL 驱动
1. 打开项目的 build.gradle (Module)
路径:Gradle Scripts → build.gradle (Module.app)
2. 在 dependencies 中添加 JDBC 驱动
gradle
dependencies {
// MySQL 8.0 以上驱动(必须)
implementation 'mysql:mysql-connector-java:8.0.33'
// 其他依赖不变...
}
3. 点击 Sync Now 同步
等待驱动下载完成,不爆红即为成功。
四、第二步:配置 AndroidManifest 权限
打开:app → manifests → AndroidManifest.xml在 manifest 根节点 下添加:
xml
<!-- 网络权限 → 不添加永远连不上数据库 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许明文通信 → 解决 HTTP 拦截 -->
<application
...
android:usesCleartextTraffic="true">
不配置这两行,连接直接失败!
五、第三步:MySQL 数据库配置(超级关键)
1. 允许远程访问(默认只允许本地访问)
- 打开 MySQL 安装目录下的
my.ini - 找到
bind-address - 改为:
plaintext
bind-address = 0.0.0.0
- 重启 MySQL 服务
2. 给用户开放远程权限
打开 Navicat /cmd 命令行 执行:
sql
-- 给 root 开放所有IP访问权限
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
3. 关闭 MySQL SSL 安全校验(安卓连接必关)
连接 URL 必须加:
plaintext
useSSL=false
4. Windows 防火墙放行 3306 端口
否则安卓会超时连不上!
- 打开 Windows 防火墙 → 高级设置
- 入站规则 → 新建规则 → 端口 → 3306 → 允许连接
六、第四步:编写安卓连接 MySQL 代码
必须在子线程中执行,不能主线程连接!
1. 创建数据库连接工具类 DBUtil.kt
kotlin
import java.sql.Connection
import java.sql.DriverManager
import java.sql.SQLException
class DBUtil {
companion object {
// 【必须改成你自己的信息】
private const val IP = "192.168.xxx.xxx" // 你的电脑局域网IP
private const val PORT = "3306"
private const val DB_NAME = "smart_wardrobe" // 你的库名
private const val USER = "root"
private const val PASSWORD = "123456"
// 连接URL(时区+SSL关闭)
private const val URL = "jdbc:mysql://$IP:$PORT/$DB_NAME" +
"?useSSL=false" +
"&serverTimezone=UTC" +
"&allowPublicKeyRetrieval=true"
// 获取连接
fun getConnection(): Connection? {
return try {
Class.forName("com.mysql.cj.jdbc.Driver")
DriverManager.getConnection(URL, USER, PASSWORD)
} catch (e: SQLException) {
e.printStackTrace()
null
}
}
}
}
2. 在 Activity 中异步测试连接
kotlin
// 按钮点击测试连接
btn_test_db.setOnClickListener {
Thread {
val conn = DBUtil.getConnection()
if (conn != null) {
runOnUiThread {
tv_result.text = "✅ 数据库连接成功!"
}
conn.close()
} else {
runOnUiThread {
tv_result.text = "❌ 连接失败"
}
}
}.start()
}
七、第五步:测试运行
出现:
plaintext
✅ 数据库连接成功!
说明 安卓 ←→ MySQL 连接完全打通!
八、实战踩坑:所有报错解决方案
报错 1: Communications link failure
原因:IP 错误、防火墙没关、3306 没放行解决:
- 电脑 cmd 输入
ipconfig获取局域网 IPv4 - 放行 3306 端口
- 关闭电脑防火墙
报错 2: Access denied for user 'root'@'xxx.xxx.xxx.xxx'
原因:MySQL 没开远程权限解决:执行前面的授权 SQL
报错 3: No suitable driver found
原因:没导入 mysql-connector-java解决:检查 build.gradle 依赖
报错 4: Android 9.0 以上无法连接
解决:添加 android:usesCleartextTraffic="true"
报错 5: 主线程网络异常
解决:必须用 Thread {} 子线程连接
报错 6: Public Key Retrieval is not allowed
解决:URL 加
plaintext
&allowPublicKeyRetrieval=true
九、本项目数据库表结构设计(智能衣橱)
sql
CREATE DATABASE smart_wardrobe;
USE smart_wardrobe;
-- 用户表
CREATE TABLE user(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
password VARCHAR(20)
);
-- 衣物表
CREATE TABLE clothes(
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
type VARCHAR(10),
image_url VARCHAR(255),
color VARCHAR(10)
);
安卓可直接进行 增删改查。
十、总结
本文实现了:
- Android Studio 配置 MySQL 驱动
- 安卓权限配置
- MySQL 远程访问全开
- 子线程 JDBC 连接
- 所有报错一站式解决
- 智能衣橱项目数据库实战
安卓直连 MySQL 适合课程设计 / 实训项目正式项目推荐使用:SpringBoot 接口 + Retrofit
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)