這篇我們就來介紹下鴻蒙系統的數據庫如何使用 鴻蒙的關系型數據庫是基于SQLite的實現,官方提供了關系型數據庫實現和基于對象的關系型數據庫兩種數據庫操作,本文會指導大家如何分別使用這兩種數據庫操作,來對數據庫進行簡單的CRUD操作。
關系型數據庫
關系型數據庫(Relational Database,RDB)是一種基于關系模型來管理數據的數據庫。HarmonyOS關系型數據庫基于SQLite組件提供了一套完整的對本地數據庫進行管理的機制,對外提供了一系列的增、刪、改、查接口,也可以直接運行用戶輸入的SQL語句來滿足復雜的場景需要。運作機制如圖:
1、創建數據庫
//設置數據庫為RdbStore.db
StoreConfig config = StoreConfig.newDefaultConfig(“RdbStore.db”);
DatabaseHelper helper = new DatabaseHelper(getContext());
RdbStore rdbStore = helper.getRdbStore(config, 1, new RdbOpenCallback() {
@Override
public void onCreate(RdbStore rdbStore) {
//創建表
rdbStore.executeSql(“create table if not exists User(userId integer primary key autoincrement,userName text)”);
//更多建表語句可以在這里寫
}
@Override
public void onUpgrade(RdbStore rdbStore, int i, int i1) {
//升級數據庫操作
}
});
2、插入數據
//使用鍵值對方式插入數據庫rdbCreateDb()獲取的就是創建的時候生成的rdbStore
ValuesBucket values = new ValuesBucket();
values.putInteger(“userId”,1);
values.putString(“userName”,“name1”);
long id = rdbCreateDb().insert(“User”,values);
//使用最原始的sql語句插入數據
rdbCreateDb().executeSql(“insert into User (userId,userName) values (2,‘name2’)”);
3、刪除數據
RdbPredicates rdbPredicates = new RdbPredicates(“User”).equalTo(“userName”,“name1”);
int i = rdbCreateDb().delete(rdbPredicates);
4、查詢數據
String[] columns = new String[]{“userId”,“userName”};
RdbPredicates rdbPredicates = new RdbPredicates(“User”);//構建查詢謂詞
ResultSet resultSet = rdbCreateDb().query(rdbPredicates,columns);
while (resultSet.goToNextRow()){
int userId = resultSet.getInt(resultSet.getColumnIndexForName(“userId”));
String userName = resultSet.getString(resultSet.getColumnIndexForName(“userName”));
HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, “===demo===”), “查詢到userId=” + userId + “ userName=” +userName);
}
5、修改數據
RdbPredicates rdbPredicates = new RdbPredicates(“User”).equalTo(“userName”,“name2”);
ValuesBucket values = new ValuesBucket();
values.putString(“userName”,“name3”);
//更新數據
rdbCreateDb().update(values,rdbPredicates);
增刪改查操作都可以通過rdbStore的executeSql方法,直接執行sql語句執行。語句語法采用SQLite的語法。
對象關系型數據庫
HarmonyOS對象關系映射(Object Relational Mapping,ORM)數據庫是一款基于SQLite的數據庫框架,屏蔽了底層SQLite數據庫的SQL操作,針對實體和關系提供了增刪改查等一系列的面向對象接口。應用開發者不必再去編寫復雜的SQL語句, 以操作對象的形式來操作數據庫,提升效率的同時也能聚焦于業務開發。運作機制如圖:
1、環境配置
1、添加相應的jar包到模塊libs里面,相關文件可以在demo中找到。
2、在模塊的build.gradle中的對應添加注解引用
//開啟注解
ohos {
compileOptions {
annotationEnabled true
}
}
//添加注解處理引用
dependencies {
annotationProcessor files(“。/libs/orm_annotations_java.jar”, “。/libs/orm_annotations_processor_java.jar”)
}
2、初始化數據庫配置
1、新建數據庫實現類
//entities里放置的是表對應的javabean,version對應數據庫版本
@Database(entities = {OrmUser.class}, version = 1)
public abstract class OrmDBTest extends OrmDatabase {
@Override
public RdbOpenCallback getHelper() {
return new RdbOpenCallback() {
@Override
public void onCreate(RdbStore rdbStore) {
//創建成功后執行操作
}
@Override
public void onUpgrade(RdbStore rdbStore, int oldVersion, int newVersion) {
//數據庫升級需要執行的操作
}
};
}
}
2、新建表對應的JavaBean
//對應的數據庫表名寫在注解里,另外記得get/set要寫齊全
@Entity(tableName = “OrmUser”)
public class OrmUser extends OrmObject {
@PrimaryKey(autoGenerate = true)
private int id;
private int userId;
private String userName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
3、ORM對數據庫的基本操作
1、創建數據庫上下文操作對象
private OrmContext ormCreateDb() {
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
OrmContext ormContext = databaseHelper.getOrmContext(“OrmDBTest”, “OrmDBTest.db”, OrmDBTest.class);
return ormContext;
}
2、增
OrmUser ormUser = new OrmUser();
ormUser.setUserId(1);
ormUser.setUserName(“name1”);
boolean isSuccess = ormCreateDb().insert(ormUser);
ormCreateDb().flush();
3、查
//查詢userId = 1的數據
OrmPredicates ormPredicates = ormCreateDb().where(OrmUser.class).equalTo(“userId”,“1”);
List《OrmUser》 ormUsers = ormCreateDb().query(ormPredicates);
4、改
//將查詢出來的數據值修改后更新到數據庫
OrmUser ormUser = ormQuery();
if (ormUser == null){
return;
}
ormUser.setUserName(“name2”);
ormCreateDb().update(ormUser);
ormCreateDb().flush();
5、刪
//將查詢出來的數據值從數據庫中刪除
OrmUser ormUser = ormQuery();
if (ormUser == null){
return;
}
ormCreateDb().delete(ormUser);
ormCreateDb().flush();
總結
數據庫中連接池的最大數量是4個,同一時間只能支持一個寫操作!對象關系型數據的數據庫類型只支持基礎數據類型及Date、Time、Timestamp、Calendar、Blob(二進制大對象)、Clob(字符大對象) 文中相關的代碼在git:https://github.com/maolinnan/HarmonyosClass
-
SQL
+關注
關注
1文章
750瀏覽量
43900 -
數據庫
+關注
關注
7文章
3711瀏覽量
64023 -
關系型數據庫
+關注
關注
0文章
7瀏覽量
2324 -
HarmonyOS
+關注
關注
79文章
1946瀏覽量
29732
發布評論請先 登錄
相關推薦
評論