為了更好地熟練掌握鴻蒙手機應用開發,今天就帶來輕量級偏好數據庫的學習筆記,供大家更好的學習鴻蒙手機的應用開發~
基本概念
在學習輕量級偏好數據庫之前呢,我們需要先了解一下數據庫有什么作用,我們學完之后才能夠學以致用。顧名思義,數據庫肯定是具有存儲功能的。這輕量級偏好數據庫的話呢高級數據庫系統與實現,不僅具有儲存數據的功能高級數據庫系統與實現,還具備將數據持久化的功能。應用運行時全量數據將會被加載在內存中的,使得訪問速度更快,存取效率更高。如果對數據持久化,數據最終會落盤到文本文件中,建議在開發過程中減少落盤頻率,即減少對持久化文件的讀寫次數。并且輕量級偏好數據庫是將數據以鍵值對的形式儲存到數據庫中。那什么是鍵值對呢,值就是儲存的數據內容,那鍵呢,就像是打開房間的鑰匙,只有打開房間才能訪問得到房間里的數據,而且每一個房間有且僅有一把鑰匙與其配對。
創建工程
打開 ,點擊左上角的File,點擊New,再選擇New ,選擇Empty (java) ,點擊Next。
將工程命名為,在 Type中選擇,選擇API 5,并且在 Type中選擇Phone選項,點擊,工程就創建完成了。
設計UI界面
我們需要設置出兩個文本、兩個文本輸入框,三個按鈕。
在entry>src>main>java>>base>gr。aphic中增加一個文件。
在文件右擊,選擇New > File,并給文件命名為 。
將其形狀設置為矩形,圓角半徑設置為100vp,背景顏色設置為藍色。
同理,我們創建一個 的文件。
那么前期的準備工作就做好了,我們接下來就需要寫出我們剛剛提到的兩個文本、兩個文本輸入框,三個按鈕。
那我們接下來就可以在java>com..>slice>中實現出數據庫了。
首先需要定義數據。在文件中,在 class 的下一行定義全局變量。
private Context context; //DatabaseHelper的構造需要傳入context
private Button buttonWrite; // 與之對應的按鈕對應
private Button buttonRead;
private Button buttonDelete;
private TextField textFieldFruit; //與之對應的文本輸入框對應
private TextField textFieldNumber;
private Preferences preferences; // 定義一個數據庫
private DatabaseHelper databaseHelper; // 定義一個數據庫操作的輔助類,可以輔助建立數據庫
private String filename; // 數據庫指定儲存的文件名
private static final HiLogLabel TAG = new HiLogLabel(HiLog.LOG_APP,0x12345,"打印");// 定義輸出控制臺,可用于輸出調試
接下來在中初始化剛剛定義的數據與創建數據庫。
context = getContext();
buttonWrite = (Button) findComponentById(ResourceTable.Id_write_btn); // 讓定義的按鈕獲取在xml布局中定義的按鈕的id,與xml布局中的輸入按鈕進行綁定
buttonRead = (Button) findComponentById(ResourceTable.Id_read_btn);// 與xml布局中的讀取按鈕進行綁定
buttonDelete = (Button) findComponentById(ResourceTable.Id_delete_btn);// 與xml布局中的刪除按鈕進行綁定
textFieldFruit = (TextField) findComponentById(ResourceTable.Id_text_fruit);
textFieldNumber = (TextField) findComponentById(ResourceTable.Id_text_number);
filename = "database"; // 將數據庫的文件名初始化為database
databaseHelper = new DatabaseHelper(context); //實例化數據庫輔助類
preferences = databaseHelper.getPreferences(filename);//實例化數據庫
至此數據庫就已經創建完成,接下來就是往數據庫寫入數據、讀取數據與刪除數據庫。
那接下來就分別用三個不同的函數還實現這三個功能
private void Write() {
buttonWrite.setClickedListener(new Component.ClickedListener() { //這是“Write DB”按鈕的一個點擊監聽器
@Override
public void onClick(Component component) {
String fruit = textFieldFruit.getText(); //讀取輸入“Fruit”文本框的數據
try {
int number = Integer.parseInt(textFieldNumber.getText()); // 讀取輸入“Number”文本框的數據
preferences.putString("fruit",fruit); //將讀到的Fruit的字符串寫入數據庫,它對應的鍵是fruit
preferences.putInt("number",number); //將讀到的Number的字符串寫入數據庫,它對應的鍵是number
preferences.flush(); //將實例持久化
new ToastDialog(context).setText("Write to DB file success").show(); //這是一個文本提示框,輸出提示寫入數據成功
} catch (NumberFormatException e) {
new ToastDialog(context).setText("Please input number in Number row").show();//輸出提示在文本輸入框內沒有輸入數據
}
}
});
}
private void Read() {
buttonRead.setClickedListener(new Component.ClickedListener() {//這是“Read DB”按鈕的一個點擊監聽器
@Override
public void onClick(Component component) {
String fruit = preferences.getString("fruit",""); // 在讀取數據庫中“fruit”對應的值,如果數據庫中沒有fruit這個鍵,那就返回空字符 可以避免程序出現異常
int number = preferences.getInt("number",0); //同理這在讀取數據庫中number對應的數值,找不到則返回0這個默認值
String str = String.format(Locale.ENGLISH,"fruit: %s,number: %d",fruit,number);
new ToastDialog(context).setText(str).show(); //這是在提示框中輸出通過fruit和number作為鍵尋找到的對應的值
}
});
}
private void Delete () {
buttonDelete.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
if (databaseHelper.deletePreferences(filename)) { //刪除文件和文件對應的Preferences單實例 刪除成功返回真,失敗返回假
preferences.clear(); // 清空數據庫
new ToastDialog(context).setText("Delete DB file success").show(); //用ToastDialog提示刪除成功
} else
new ToastDialog(context).setText("Delete DB file failed").show(); //用ToastDialog提示刪除失敗
}
});
}
記得在中調用這三個函數
Write();
Read();
Delete();
這是點擊三個按鈕之后的提示框輸出的內容
至此一個完整的輕量級偏好數據庫就全部完成了。
結語
源碼就放在附件中了,可以供大家下載之后跑一下試試看效果,感興趣的可以一步接一步跟著編寫。
——————