在 Xamarin.Android 當中使用 LiteDB 處理 NoSQL 資料…
主題: |
在 Xamarin.Android 當中使用 LiteDB 處理 NoSQL 資料… |
文章簡介: |
平常我們在 Mobile App 中很常使用 SQLite 來儲存 Mobile App 中的資料,但遇到為數較多的非關聯式資料要儲存的時候(如: 圖片等),就得另外作資料上的處理後才能作存取,此時就顯得有點綁手綁腳的。這樣的問題,就讓我們用LiteDB來解決吧~~~ |
作者: |
James Tsai |
版本/產出日期: |
V1.0/2017.2.21 |
1. 前言
• 在看到了 LiteDB 這個原生利用 C# 打造的 Embedded DB後,就發現只要是 C# 開發的任何應用程式,都可以利用 LiteDB 來儲存資料。而 LiteDB 除了本身的 DLL 量體小、直接支援 Linq 查詢、效能快 (多種情境下都比 SQLite 快)、加密 …等好處之外,最重要的就是它從一開始打造時就是用處理 NoSQL 的 DB 架構概念設計的。
• 所以當 Mobile App 遇到需要儲存為數較多的非關聯式資料時,用 LiteDB 來儲存就相當方便,以下我們就簡單的來看看如何在 Xamarin.Android 當中,使用 LiteDB 處理圖片儲存與讀取。
2. 環境準備
• 可測試執行Xamarin.Android的專案環境。
3. 本文
前置準備
• 圖片準備:
準備一個圖檔放在可讀取的網路位址中,如下圖:
• Xamarin.Android專案安裝 LiteDB 套件的準備:
直接在建立好的Xamarin.Android專案上點選右鍵選單中的"管理NuGet套件"。
接著在NuGet 封裝管理員中點選"瀏覽",搜尋 LiteDB。點選搜尋到的 LiteDB 套件後點選安裝。
安裝完成後,專案的參考會多出 LiteDB 的 DLL 參考。
• 測試程式的 Layout 外觀的準備:
在App1專案,找到Resources->layout當中打開Main.axml,將設計畫面處理成如下圖所示:
實線框當中的元件為Button,由上到下的 Id 依序為 SaveImageFromUrlToLiteDbButton、 LoadImageFromLiteDbButton、SaveImageFromLiteDbToLocalFileButton。
虛線框當中的元件為ImageView,其 Id 為 MainImageView。
存取LiteDB 的程式實際撰寫
• 打開專案底下的 MainActivity.cs 來增加對應的程式碼。
• 首先先設定使用 LiteDb 時會用到的一些基本定義值,如下圖程式碼:
在此測試App中的 DB 名稱定義為 MyData.db,再透過 LiteDB 本身所設計的連線字串格式設定好連線字串(LiteDB Connection String )。
• 接著設定畫面按鈕與按鈕點選的事件註冊,如下圖程式碼:
• 在此測試的 App 其中的一個按鈕功能是想要做到從網路上下載一個圖片檔後,將此圖片儲存到 LiteDB 當中。
下圖展示額外寫一個方法來完成從網路上下載圖片到 LiteDB 當中的功能。
由於在這邊是使用 HttpClient來下載圖片,請自行利用Nuget來安裝HttpClient套件道專案當中。另外,其中的FileKey請給一個不會重複的 Key值,在這邊簡單的使用檔名做Hash的方式當作FileKey,請讀者要依照真正專案的需求性定義應有的Key值。
接著回到 SaveImageFromUrlToLiteDbButton 按鈕點選的程式碼,呼叫此方法,並傳入圖片所在的位址。
• 繼續完成第二個按鈕的Click功能,將 LiteDB 當中所存的圖檔,讀取呈現到 ImageView 當中,如下圖程式碼:
若對以上讀取圖片顯示的程式沒有太熟悉的朋友,可參考 "在 Xamarin.Android 當中讀取圖片來顯示的方法 …I " 與 "在 Xamarin.Android 當中讀取圖片來顯示的方法 …II " 兩篇文章多加了解。
• 最後第三個按鈕的功能,將 LiteDB 當中所存的圖檔,寫出到檔案系統當中存成一張圖片檔,如下圖:
測試執行與結果
• 開始測試之前,請先從 Visual Studio 的 "工具" 選單當中,找到 "Android -> Android 裝置監視器"。
在 "Android 裝置監視器" 當中,看到 "File Explorer" 分頁。
• 接著回到在 Visual Studio 當中執行測試該專案後,回到 "Android 裝置監視器" 的 "File Explorer" 當中的 "data –> data" 底下,找到該測試專案 App1.App1 使用檔案的情形。
• 在執行起來的 App1當中,點選第一顆按鈕:
就會在 "File Explorer" 當中看到出現了 "MyData.db"。
• 接著再按下第二顆按鈕,就會看到下面的 ImageView 出現我們存在 LiteDB 中的圖檔。
• 在按下第三顆按鈕,會將存在 LiteDB 的圖檔寫到檔案系統當中,再次透過 "Android 裝置監視器" 的 "File Explorer" 來觀察這件事情,看到下載的圖檔存在指定路徑底下。
• 當然,若透過 "Android 裝置監視器" 的 "File Explorer" 將檔案抽取出來,當然可以到這張完整的圖檔顯示的。
以上就是簡單的使用 LiteDB 來處理非關聯式資料的簡單操作,有興趣的人趕快試用看看吧~~
4. 參考來源
• LiteDB 官網:
https://www.litedb.org
• LiteDB Viewer:
https://github.com/falahati/LiteDBViewer