Andrid Sqlite 框架 room

本文详细介绍Android JetPack推荐的SQLite框架Room的使用方法,包括Entity定义、Dao接口创建、Database抽象类构建,以及如何进行数据库升级迁移。适用于Android开发者学习和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RoomSqLExample

Android JetPack 推荐的SqLite 框架 Room
注意:Room 调用Dao 增删该查 需要在 子线程中执行
在这里插入图片描述

导入:

    def room_version = "1.1.1"
        implementation "android.arch.persistence.room:runtime:$room_version"
        annotationProcessor "android.arch.persistence.room:compiler:$room_version"

表:

    @Entity(tableName = "userBean")
    public class UserBean {
        @PrimaryKey(autoGenerate = true)
        private int id;
        private String userName;
        private String password;
        private int age;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

Dao接口:

    @Dao
    public interface UserDao {

        @Query("SELECT * FROM  userBean")
        List<UserBean> getAllUserBeans();

        @Insert
        void insert(UserBean... UserBeans);

        @Update
        void update(UserBean... UserBeans);

        @Delete
        void delete(UserBean... UserBeans);
    }

Database

    @Database(entities = {UserBean.class}, version = 1, exportSchema = false)
    public abstract class AppDatebase extends RoomDatabase {
        private static final String DB_NAME = "AppDatebase.db";
        private static volatile AppDatebase instance;

        static synchronized AppDatebase getInstance(Context context) {
            if (instance == null) {
                instance = create(context);
            }
            return instance;
        }

        private static AppDatebase create(final Context context) {
            return Room.databaseBuilder(
                    context,
                    AppDatebase.class,
                    DB_NAME).build();
        }

        public abstract UserDao getUserDao();
    }

数据库升级 迁移数据:

    static final Migration MIGRATION_1_2 = new Migration(1, 2) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            database.execSQL("CREATE TABLE `Fruit` (`id` INTEGER, "
                    + "`name` TEXT, PRIMARY KEY(`id`))");
        }
    };

    static final Migration MIGRATION_2_3 = new Migration(2, 3) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            database.execSQL("ALTER TABLE Book "
                    + " ADD COLUMN pub_year INTEGER");
        }
    };

    Room.databaseBuilder(getApplicationContext(), MyDb.class, "database-name")
            .addMigrations(MIGRATION_1_2, MIGRATION_2_3).build();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值