SQLite 是安卓内置的轻量级数据库,适合存储少量结构化数据。
步骤 | 说明 | 代码示例 |
---|---|---|
创建数据库帮助类 | 继承 SQLiteOpenHelper ,用于创建和升级数据库 | java<br>public class DBHelper extends SQLiteOpenHelper {<br> public DBHelper(Context context) {<br> super(context, "app.db", null, 1);<br> }<br> @Override<br> public void onCreate(SQLiteDatabase db) {<br> db.execSQL("CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT)");<br> }<br> @Override<br> public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}<br>} |
操作数据 | 通过 SQLiteDatabase 增删改查 | java<br>DBHelper helper = new DBHelper(context);<br>SQLiteDatabase db = helper.getWritableDatabase();<br>// 插入<br>db.execSQL("INSERT INTO user (name) VALUES (?)", new String[]{"Alice"});<br>// 查询<br>Cursor cursor = db.rawQuery("SELECT FROM user", null);<br>while (cursor.moveToNext()) {<br> int id = cursor.getInt(0);<br> String name = cursor.getString(1);<br>}<br>cursor.close(); |
需通过网络请求连接服务器端的数据库,通常配合 Web 服务使用。
技术选型 | 说明 | 代码示例 |
---|---|---|
网络请求 | 使用 Retrofit/OkHttp 发送 HTTP 请求 | java<br>Retrofit retrofit = new Retrofit.Builder()<br> .baseUrl("https://example.com/api/")<br> .addConverterFactory(GsonConverterFactory.create())<br> .build();<br>ApiService service = retrofit.create(ApiService.class);<br>// 定义接口<br>interface ApiService {<br> @POST("/user")<br> Call<ResponseBody> addUser(@Body User user);<br>} |
数据处理 | 解析 JSON 并存储到本地缓存(如 Room) | java<br>// 接收服务器返回的数据<br>Call<User> call = service.getUser(1);<br>call.enqueue(new Callback<User>() {<br> @Override<br> public void onResponse(Call<User> call, Response<User> response) {<br> if (response.isSuccessful()) {<br> User user = response.body();<br> // 存入 Room 数据库<br> userDao.insert(user);<br> }<br> }<br> @Override<br> public void onFailure(Call<User> call, Throwable t) {}<br>}); |
Room 是谷歌提供的抽象层,简化 SQLite 操作并支持编译时校验。
组件 | 说明 | 代码示例 |
---|---|---|
实体类 | 定义数据表结构 | java<br>@Entity(tableName = "user")<br>public class User {<br> @PrimaryKey(autoGenerate = true)<br> public int id;<br> @ColumnInfo(name = "name")<br> public String name;<br>} |
DAO 接口 | 定义数据库操作方法 | java<br>@Dao<br>public interface UserDao {<br> @Insert<br> void insert(User user);<br> @Query("SELECT FROM user WHERE id = :userId")<br> User getUserById(int userId);<br>} |
数据库类 | 构建抽象数据库对象 | java<br>@Database(entities = {User.class}, version = 1)<br>public abstract class AppDatabase extends RoomDatabase {<br> public abstract UserDao userDao();<br>} |
使用方式 | 通过实例操作数据 | java<br>AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "app.db").build();<br>UserDao userDao = db.userDao();<br>userDao.insert(new User(0, "Bob")); |
无需自建服务器,直接使用云端数据库服务。
步骤 | 说明 | 代码示例 |
---|---|---|
添加依赖 | 在 build.gradle 中配置 | groovy<br>implementation 'com.google.firebase:firebase-firestore:24.0.0' |
初始化 | 在应用启动时初始化 Firebase | java<br>FirebaseApp.initializeApp(this); |
数据操作 | 使用 API 进行增删改查 | java<br>// 添加数据<br>Map<String, Object> user = new HashMap<>();<br>user.put("name", "Charlie");<br>FirebaseFirestore.getInstance().collection("users").add(user);<br>// 查询数据<br>FirebaseFirestore.getInstance().collection("users").get().addOnCompleteListener(task -> {<br> if (task.isSuccessful()) {<br> for (DocumentSnapshot doc : task.getResult().getDocuments()) {<br> Log.d("Firestore", "User: " + doc.getString("name"));<br> }<br> }<br>}); |
AsyncTask
、Coroutine
或 RxJava)处理网络请求,避免阻塞主线程。GlobalScope.launch(Dispatchers.IO) { val result = service.getUser(1).execute() withContext(Dispatchers.Main) { // 更新 UI } }