选择云数据库类型
常见云数据库类型及适用场景:
| 数据库类型 | 特点 | 适用场景 |
|——————|———————————————————————-|————————|
| Firebase Firestore| 实时同步、NoSQL、云端一体化服务 | 实时聊天、用户数据存储 |
| MySQL/MariaDB | 传统关系型数据库,支持SQL语法 | 复杂查询、事务处理 |
| MongoDB Atlas | 文档型NoSQL数据库,弹性扩展 | 非结构化数据、高并发 |
| 酷盾安全TDSQL | 分布式关系型数据库,兼容MySQL协议 | 企业级高可用场景 |
创建云数据库实例
https://xxx.firebaseio.com
或 jdbc:mysql://hostname:port/dbname
)在 AndroidManifest.xml
中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
根据数据库类型选择库:
implementation 'com.google.firebase:firebase-firestore:24.0.0'
implementation 'com.github.aakira:napier:1.7.1' // 日志库辅助调试 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' // 协程处理网络请求
implementation 'org.mongodb:mongo-java-driver:3.12.10'
(1) Firebase Firestore 示例
// 初始化Firebase FirebaseApp.initializeApp(this) val db = FirebaseFirestore.getInstance() // 写入数据 val user = hashMapOf( "name" to "John Doe", "age" to 30 ) db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d("Firestore", "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w("Firestore", "Error adding document", e) }
(2) MySQL 示例(使用Retrofit+OkHttp)
// 定义API接口 interface ApiService { @GET("/users") suspend fun getUsers(): Response<List<User>> } // 配置Retrofit val retrofit = Retrofit.Builder() .baseUrl("https://your-mysql-server.com/") .addConverterFactory(GsonConverterFactory.create()) .build() val apiService = retrofit.create(ApiService::class.java) // 异步调用(协程) GlobalScope.launch(Dispatchers.IO) { try { val response = apiService.getUsers() if (response.isSuccessful) { val users = response.body() // 处理数据 } } catch (e: Exception) { e.printStackTrace() } }
密钥管理
gradle.properties
或 Android Keystore 存储密钥。网络请求优化
AsyncTask
(Java)处理异步操作,避免阻塞主线程。数据库安全规则
service cloud.firestore { match /databases/{database}/documents { match /users/{userId} { allow read, write: if request.auth != null; } } }
问题描述 | 解决方案 |
---|---|
连接超时或失败 | 检查网络权限、确认云服务端口开放(如MySQL 3306)、测试HTTP/HTTPS请求 |
数据读写权限被拒 | 检查云数据库安全规则,确保用户认证状态(如Firebase需登录用户) |
SSL证书验证失败 | 下载云服务商的CA证书并配置到信任列表,或启用Retrofit的hostnameVerifier |
数据结构不匹配 | 确认安卓端字段与云数据库字段一致,使用工具(如Postman)测试API接口 |
解答:
解答:
FirebaseFirestore.getInstance().firestoreSettings = FirebaseFirestoreSettings.Builder() .setPersistenceEnabled(true) // 启用离线持久化 .build()