亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

常見的數(shù)據(jù)庫管理系統(tǒng) android 數(shù)據(jù)庫操作


常見的數(shù)據(jù)庫管理系統(tǒng) android 數(shù)據(jù)庫操作

文章插圖
ndroid 數(shù)據(jù)庫Room的開發(fā)使用詳解一.簡介:
Room 在SQLite上提供了一個(gè)抽象層,以便在充分利用SQLite的強(qiáng)大功能的同時(shí),能夠流暢地訪問數(shù)據(jù)庫 。
Room包含3個(gè)主要組件:
數(shù)據(jù)庫:包含數(shù)據(jù)庫持有者,并作為應(yīng)用已保留持久性關(guān)系型數(shù)據(jù)的底層連接的主要接入點(diǎn) 。
@Database注釋
1.是擴(kuò)展RoomDatabase的抽象類 。
2.在注釋中添加與數(shù)據(jù)庫關(guān)聯(lián)的實(shí)體表 。
3.包含具有0個(gè)參數(shù)且返回使用@Dao 注釋的類的抽象方法 。
在運(yùn)行時(shí),您可以通過調(diào)用Room.databaseBuilder()或Room.inMemoryDatabaseBuilder()獲取Database的實(shí)例 。
@Entity:表示數(shù)據(jù)庫中的表
@Dao:包含用于訪問數(shù)據(jù)庫的方法
二:依賴Room數(shù)據(jù)庫
1.在App模塊下bulid.Gradle 添加項(xiàng)目的依賴
//添加Room依賴implementation 'androidx.room:room-runtime:2.2.5'annotationProcessor 'androidx.room:room-compiler:2.2.5'三:創(chuàng)建一個(gè)實(shí)體類Entity
@Entitypublic class User {@PrimaryKey(autoGenerate = true)//主鍵是否自動(dòng)增長,默認(rèn)為false private int id; private String name; private int age; 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 int getAge() {return age; }public void setAge(int age) {this.age = age; }}1.主鍵:每一個(gè)實(shí)體必須定義至少一個(gè)字段作為主鍵 。
1.可以在實(shí)體中@PrimaryKey(autoGenerate = true)注解,同時(shí)你也可以使用autoGenerate屬性,可以通過Room來自動(dòng)分配ID 2.也可以通過@Entity@Entity(primaryKeys = {"id","name"})如果有組合主鍵2.通常Room會(huì)使用類名作為數(shù)據(jù)庫的表名,如果你希望自定義表名在@Entity(tableName = “my_user”),注意: SQLite中,表名是不區(qū)分大小寫的
3.Room用變量名稱作為數(shù)據(jù)庫表的字段名稱,如果你希望字段名稱和變量名稱不一樣,在變量出添加
public class User { @ColumnInfo(name = "first_name")private String name;}4.索引和唯一性
根據(jù)你操作數(shù)據(jù)的方式你可能需要通過索引來提高查詢數(shù)據(jù)庫的速度,通過@Entity添加indices屬性,有些字段設(shè)置唯一性,可以通過@Index注解下設(shè)置unique為true
@Entity(indices = {@Index(value = "https://www.520longzhigu.com/diannao/name",unique = true)})public class User {private String name;}5.定義對(duì)象之間的關(guān)系
由于SQLite是關(guān)系型數(shù)據(jù)庫,你可以指定對(duì)象之前的關(guān)系,Room是明確禁止直接使用關(guān)系,但Room仍然允許你在實(shí)體之間定義外鍵 。
例如:如果有另一個(gè)實(shí)體叫做Book,你可以在User實(shí)體下使用@ForeignKey注解定義他們之間的關(guān)系 。
@Entity(foreignKeys = @ForeignKey(entity = User.class, parentColumns = "id",childColumns = "user_id")//定義外鍵)public class Book {@PrimaryKey//定義主鍵 public int bookId; public String title; @ColumnInfo(name = "user_id")//定義數(shù)據(jù)庫表中的字段名public int userId; public int getUserId() {return userId; }public void setUserId(int userId) {this.userId = userId; }public int getBookId() {return bookId; }public void setBookId(int bookId) {this.bookId = bookId; }public String getTitle() {return title; }public void setTitle(String title) {this.title = title; }}6.創(chuàng)建嵌套對(duì)象
你可以使用@Embedded批注來表示要分解到表中子字段的對(duì)象
例如:我們的User類可以包含Address類型的字段,它表示名為street,city,state和postCode的字段的組合 。要將組合列分別存儲(chǔ)在表中,請(qǐng)?jiān)赨ser類中包含使用@Embedded注釋的Address字段
public class Address {public String street;public String state;public String city;@ColumnInfo(name = "post_code")public int postCode;}@Entitypublic class User {@PrimaryKeypublic int id;public String firstName;@Embeddedpublic Address address;}故這個(gè)表示User對(duì)象的表包含具有以下名稱的列:id,firstName,street,state,city和post_code 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: