SQLite 是 Android 内置的轻量级数据库,适合存储结构化数据。
步骤:
创建数据库和表
通过 SQLiteOpenHelper
创建或升级数据库。
public class DatabaseHelper extends SQLiteOpenHelper { private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)"; public DatabaseHelper(Context context) { super(context, "app.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } // 其他方法省略 }
插入数据
使用 ContentValues
或原生 SQL 语句插入数据。
SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "张三"); db.insert("users", null, values); // 返回新插入行的 ID
Room 是 Android 官方推荐的数据库抽象层,基于 SQLite,支持编译时校验。
步骤:
定义实体类
@Entity(tableName = "users") public class User { @PrimaryKey(autoGenerate = true) public int id; public String name; }
创建 DAO(数据访问对象)
@Dao public interface UserDao { @Insert long insertUser(User user); // 返回新插入行的 ID }
调用插入方法
UserDao userDao = AppDatabase.getInstance(context).userDao(); User user = new User(); user.name = "李四"; userDao.insertUser(user);
Realm 是一个高性能的移动端数据库,支持对象关系映射(ORM)。
步骤:
定义模型类
public class User extends RealmObject { @PrimaryKey private int id; private String name; // Getter/Setter 方法 }
插入数据
Realm realm = Realm.getDefaultInstance(); realm.executeTransaction(r -> { User user = r.createObject(User.class); // 自动生成主键 user.setName("王五"); });
Firebase 是 Google 提供的云数据库,适合实时同步数据。
步骤:
初始化 Firebase
在 build.gradle
中添加依赖并配置 google-services.json
。
插入数据
DatabaseReference database = FirebaseDatabase.getInstance().getReference(); User user = new User("赵六"); database.child("users").push().setValue(user); // 生成唯一 ID
特性 | SQLite | Room | Realm | Firebase |
---|---|---|---|---|
复杂度 | 中等 | 低(编译时校验) | 低(ORM) | 低(云端同步) |
性能 | 一般 | 优化(LiveData) | 高(内存优先) | 高(实时同步) |
适用场景 | 简单本地存储 | 复杂业务逻辑 | 高频读写 | 跨设备同步 |
依赖配置 | 无 | Android Jetpack | Realm SDK | Firebase SDK |
@Insert
配合 List
参数。 @Insert List<Long> insertUsers(List<User> users); // 返回每个插入项的 ID
List<User> userList = new ArrayList<>(); userList.add(new User("A")); userList.add(new User("B")); userDao.insertUsers(userList);