上一篇
安卓开发数据库增加
- 行业动态
- 2025-04-22
- 6
安卓开发中数据库增加数据的实现方式
本地数据库(SQLite)
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 持久化库
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)
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 Realtime Database)
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 |
相关问题与解答
问题 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);