当前位置:首页 > 行业动态 > 正文

安卓开发数据库增加

安卓开发中数据库增加数据的实现方式


本地数据库(SQLite)

SQLite 是 Android 内置的轻量级数据库,适合存储结构化数据。

步骤:

  1. 创建数据库和表
    通过 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);
        }
        // 其他方法省略
    }
  2. 插入数据
    使用 ContentValues 或原生 SQL 语句插入数据。

    SQLiteDatabase db = helper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name", "张三");
    db.insert("users", null, values); // 返回新插入行的 ID

Room 持久化库

Room 是 Android 官方推荐的数据库抽象层,基于 SQLite,支持编译时校验。

步骤:

安卓开发数据库增加

安卓开发数据库增加

  1. 定义实体类

    @Entity(tableName = "users")
    public class User {
        @PrimaryKey(autoGenerate = true)
        public int id;
        public String name;
    }
  2. 创建 DAO(数据访问对象)

    @Dao
    public interface UserDao {
        @Insert
        long insertUser(User user); // 返回新插入行的 ID
    }
  3. 调用插入方法

    UserDao userDao = AppDatabase.getInstance(context).userDao();
    User user = new User();
    user.name = "李四";
    userDao.insertUser(user);

第三方库(Realm)

Realm 是一个高性能的移动端数据库,支持对象关系映射(ORM)。

步骤:

  1. 定义模型类

    安卓开发数据库增加

    public class User extends RealmObject {
        @PrimaryKey
        private int id;
        private String name;
        // Getter/Setter 方法
    }
  2. 插入数据

    Realm realm = Realm.getDefaultInstance();
    realm.executeTransaction(r -> {
        User user = r.createObject(User.class); // 自动生成主键
        user.setName("王五");
    });

远程数据库(Firebase Realtime Database)

Firebase 是 Google 提供的云数据库,适合实时同步数据。

步骤:

  1. 初始化 Firebase
    build.gradle 中添加依赖并配置 google-services.json

  2. 插入数据

    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

相关问题与解答

问题 1:如何选择本地数据库与远程数据库?

  • 本地数据库(如 SQLite/Room):适合离线存储、敏感数据(如用户密码)、减少网络依赖。
  • 远程数据库(如 Firebase):适合多设备同步、实时更新、无需服务器维护的场景。
  • 建议:结合使用,本地存储缓存,远程存储核心数据。

问题 2:Room 如何实现批量插入?

  • 方法:在 DAO 中使用 @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);