同时用过JDBC和android的SqliteDatabase的人就知道,SqliteDatabase真的是太不好用了,别人说sqlite的其他一些缺点我都不在乎,我在乎的就是它好不好用。人家就跟我说Room比较好用,然后………………,我不得不说,只有使用过android的数据库接口之后,你才会知道jdbc是做得多么的优秀。
相关的视频教程:
《Android基础入门到精通数据存储之Room三角色介绍》 https://www.bilibili.com/video/BV1wX4y1V7TG
《Android基础入门到精通数据存储之Room三角色编写》https://www.bilibili.com/video/BV1hK4y1J7xw
《Android基础入门到精通数据存储之Room的实战》 https://www.bilibili.com/video/BV1Ef4y1474j
使用Room来管理数据库:
首先要在项目app目录下的build.gradle中添加room的依赖:
//添加对room数据库访问的支持
def room_version = "2.2.6" //创建一个变量用于存版本号,方便以后修改版本号
implementation "androidx.room:room-runtime:$room_version" //Room API
annotationProcessor "androidx.room:room-compiler:$room_version" //Room的注解处理器,用于解析@注解 以实现特定的功能。
1、定义数据库表,这个类用于定义表的名字、结构,这个类就对应数据库中的一张表:
@Entity(tableName = "Words")
class Words {
int id;
String name;
int age;
public WordsDao(int _id, String _name, int _age){
id=_id;
name=_name;
age=_age;
}
}
2、定义数据库访问接口:
@Dao
interface WordsDao{
//在这里可以将sql语句设置成一个方法,让其他地方可以调用,比如:
@Query("select * from WordsTable")
List getAll();
}
3、定义数据库@Database(entities = {WordsTable.class},version=1,exportSchema = false)
public abstract class WordsDatabase extends RoomDatabase {
public abstract WordsDao getWordDao();
}
4. 使用Room:
在MainActivity中:WordsDatabase wordsDatabase;
WordsDao wordsDao;
在onCreate()中:wordsDatabase = Room.databaseBuilder(this, WordsDatabase.class, "words_database")
.build();
wordsDao = wordsDatabase.getWordDao();
获取数据库表WordsTable的查询结果集:
List words=wordsDao.getAll();