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

安卓开发数据库增加

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


本地数据库(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张

  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

数据库插入方式对比

特性SQLiteRoomRealmFirebase
复杂度中等低(编译时校验)低(ORM)低(云端同步)
性能一般优化(LiveData)高(内存优先)高(实时同步)
适用场景简单本地存储复杂业务逻辑高频读写跨设备同步
依赖配置Android JetpackRealm SDKFirebase 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);