android room 清空表,Android Room的用法

SQLite是Android内置的轻量级关系型数据库,但直接使用SQLite core包做数据库操作有以下劣势:

需要编写长且重复的代码,这会很耗时且容易出错。

管理SQL困难,特别对于复杂的数据库结构。

Room是在这样的背景下应运而生。Room充当现有SQLite API的抽象层。 SQLiite API所有必需的包,参数,方法和变量都使用简单的注释Annotation来表示。相应的Annotation如下:

@Entity:数据模型类,对应数据库的表

@Dao:使用一个接口类来表示Dao(Data Access Object)

@Database:使用此注释的类会创建一个抽象的Dao

@PrimaryKey:标识属性为表的主键

@Insert:插入到表的数据

@Update:更新到表数据

@Delete:删除表的数据

@Query:执行SQL查询

下面以一个示例讲解下Room的用法。

1、在build.gradle文件中添加gradle依赖关系。

implementation “android.arch.persistence.room:runtime:1.0.0”

annotationProcessor “android.arch.persistence.room:compiler:1.0.0”

2、创建数据库表的数据模型类

@Entity

public class Movies {

@NonNull

@PrimaryKey

private String movieId;

private String movieName;

public Movies() {

}

public String getMovieId() { return movieId; }

public void setMovieId(String movieId) { this.movieId = movieId; }

public String getMovieName() { return movieName; }

public void setMovieName (String movieName) { this.movieName = movieName; }

}

其中@PrimaryKey标记movieId为主键。

3、创建Dao类,并且添加CRUD对应的抽象方法。

@Dao

public interface DaoAccess {

@Insert

void insertOnlySingleMovie (Movies movies);

@Insert

void insertMultipleMovies (List moviesList);

@Query (“SELECT * FROM Movies WHERE movieId = :movieId“)

Movies fetchOneMoviesbyMovieId (int movieId);

@Update

void updateMovie (Movies movies);

@Delete

void deleteMovie (Movies movies);

}

@Query自定义了查询的SQL。

4、实现Database类

@Database (entities = {Movies.class}, version = 1, exportSchema = false)

public abstract class MovieDatabase extends RoomDatabase {

public abstract DaoAccess daoAccess() ;

}

此Database类扩展与RoomDatabase,它提供了daoAccess()的抽象方法。

5、在Activity或Fragment类中为Database类声明和初始化对象。

private static final String DATABASE_NAME = “movies_db”;

private MovieDatabase movieDatabase;

movieDatabase = Room.databaseBuilder(getApplicationContext(),

MovieDatabase.class, DATABASE_NAME)

.fallbackToDesctructiveMigration()

.build();

初始的步骤完成。 通过使用数据库对象,可以执行数据库管理的所有功能。

插入代码示例:

new Thread(new Runnable() {

@Override

public void run() {

Movies movie =new Movies();

movie.setMovieId( “2”);

movie.setMovieName(“芳华”);

movieDatabase.daoAccess () . insertOnlySingleMovie (movie);

}

}) .start();

建议:使用Thread,AsyncTask来执行数据库操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值