今天會介紹Android裡的Room資料庫中的類別有
建立資料庫的表格
//@Entity標註用來表示資料庫的表格,並且tableName設置表格名稱
@Entity(tableName = "MyUser")
public class User {
//@PrimaryKey標示這是一個主鍵,其屬性autoGenerate設置是否使ID自動累加
@PrimaryKey(autoGenerate = true)
private int id;
private String name;
private String phone;
private String hobby;
public User( String name, String phone, String hobby) {
this.name = name;
this.phone = phone;
this.hobby = hobby;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
DAO是設置SQL語法的地方,裡面包含了最常見的 CURD(Create, Update, Read, Delete)方法。
public interface UserDao {
String tableName="MyUser";
//新增所有資料
@Insert(onConflict = OnConflictStrategy.REPLACE)//預設萬一執行出錯時,REPLACE為覆蓋
void insertData(User player);
//撈取全部資料
@Query("SELECT * FROM "+ tableName)
List<User> getAllUsers();
//更新資料
@Update
void updateData(User player);
//刪除資料
@Query(" DELETE FROM " + tableName + " WHERE id = :id")
void deleteData(int id);
}
在此可以使用@Insert、@Update、@Delete以及@Query等SQL語法。
繼承RoomDatabase,並建立abstract class的資料庫
//@Database的entities:之前創建的data.class,version:資料庫版本,exportSchema:是否將資料導出至文件
@Database(entities = { User.class }, version = 1, exportSchema = false)
public abstract class UserDataBase extends RoomDatabase {
private static final String DB_NAME ="UserDataBase.db";//資料庫名稱
private static volatile UserDataBase instance;
//使用synchronized能夠確保在同一個時間只有一個 Thread 進入UserDataBase
public static synchronized UserDataBase getInstance( Context context){
if (instance == null) {
instance = create(context);//創立新的資料庫
}
return instance;
}
private static UserDataBase create(final Context context){
return Room.databaseBuilder(context,UserDataBase.class,DB_NAME).build();
}
public abstract UserDao getUserDao();//創建DAO的抽象類
}
介紹Room資料庫三種類別就到此,謝謝大家。